H_02mybatis入門

mybatis的概念

概念:一個持久層框架

  • 作用:ORM將sql語句映射成實體類

  • 特點:巧靈活

  • 半自動化,面向sql

  • 使用與中小型項目的開發(fā)

1.創(chuàng)建mybatis-config.xml文件
配置文件(xml,全局設(shè)置、數(shù)據(jù)庫連接信息等)

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/bank?useUnicode=true&characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="UserMapper.xml"/>//映射對應(yīng)的文件路徑名
  </mappers>
</configuration>

2.創(chuàng)建映射文件UserMapper.xml


<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  <mapper namespace="user">
  //查
    <select id="selectUser" resultType="com.zyk.entity.User">
        select * from user where uid=1;
    </select>

    //改
    <update id="updateUserById" parameterType="com.zyk.entity.User">
        UPDATE user set username="張三" where uid=1;
    </update>
    //增
    <insert id="insertUser" parameterType="com.zyk.entity.User">
        insert into user (username,password)value("趙六","123");
    </insert>
    //刪
    <delete id="deleteUserById" parameterType="com.zyk.entity.User">
        DELETE from user where uid = 10;
    </delete>

        //當(dāng)類屬性與數(shù)據(jù)庫字段完全一致時可以不寫
        //不一致時就在column屬性中寫上數(shù)據(jù)庫中對應(yīng)得字段名
    <resultMap id="userResultMap" type="com.zyk.entity.User">
        <result property="uid" column="uid"></result>
        <result property="username" column="username"></result>
        <result property="password" column="password"></result>
        <result property="utypeId" column="utypeId"></result>
        <result property="money" column="money"></result>

    </resultMap>
  </mapper>

其他一些屬性:

       <!-- 連接初始值,連接池啟動時創(chuàng)建的連接數(shù)量的初始值 -->
       <property name="initialSize" value="10" />
       <!-- 連接池的最大值,同一時間可以從池分配的最多連接數(shù)量,0時無限制 -->
       <property name="maxActive" value="100" />
       <!-- 最大空閑值.當(dāng)經(jīng)過一個高峰時間后,連接池可以慢慢將已經(jīng)用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 ,0時無限制-->
       <property name="maxIdle" value="0" />
       <!-- 最小空閑值.當(dāng)空閑的連接數(shù)少于閥值時,連接池就會預(yù)申請去一些連接,以免洪峰來時來不及申請 -->
       <property name="minIdle" value="${minIdle}" />
       <!-- 是否對已備語句進行池管理(布爾值),是否對PreparedStatement進行緩存 -->
       <property name="poolPreparedStatements" value="true" />
       <!-- 是否對sql進行自動提交 -->
       <property name="defaultAutoCommit" value="true" />

實例:

public class MyTest {
    public static void main(String[] args) throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//獲取主配置文件
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);//創(chuàng)建工廠對象
        //SqlSessionFactiory 作用域最好在應(yīng)用作用域---一旦創(chuàng)建就應(yīng)該在應(yīng)用的運行期間一直存在
        //SqlSessionFactoryBuilder 作用域最好在方法作用域(局部方法變量)--一但創(chuàng)建了SqlSessionFactiory之后就再也用不倒了

        SqlSession sqlSession = factory.openSession();//獲取SqlSession(相當(dāng)于Connection)
        int updateUserById = sqlSession.update("updateUserById");//修改
        Object obj = sqlSession.selectOne("selectUserById");//查
        int insertUser = sqlSession.insert("insertUser");//增
        int del = sqlSession.delete("deleteUserById");//刪
        sqlSession.commit();//提交 不提交數(shù)據(jù)庫數(shù)據(jù)不會發(fā)生改變
        sqlSession.close();//使用完一次必須關(guān)閉,一次請求
        //sqlsession是有生命周期,可以理解對應(yīng)一次數(shù)據(jù)庫事務(wù),基本可以理解為一次事務(wù)對應(yīng)一個sqlsession。
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容