1. 程式人生 > >mybatis的學習線路圖

mybatis的學習線路圖

mybatis中的重點就是:

1 如何保證sqlSession 中的執行緒安全

2 mapper 代理的底層實現

3 mybatis 的高階查詢(一對一,一對多,多對多)

4 延遲載入

5 一二級快取與快取配置

6 mybatis 分頁

通過這種方式來相當於對mapper 介面的實現,通過代理的方式建立mapper物件,實現mapper 的功能

SqlSession sqlSession = sqlSessionFactory.openSession();
//建立UserMapper物件,mybatis自動生成mapper代理物件
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findUserById(1);

輸出對映(返回的引數的型別是pojo,基本資料型別,hashmap):最後總結一下:使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可以對映成功。如果查詢出來的列名和pojo的屬性名不一致,通過定義一個resultMap對列名和pojo屬性名之間作一個對映關係。
並且在查詢出來什麼列就在resultmap 中配置什麼列,下面的sql 查詢出兩個引數,那麼上面就對映兩個引數

<resultMap type="user" id="userResultMap">
    <id column="id_" property="id"/>
    <result column="username_" property="username"/>
</resultMap>
<select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
    SELECT id id_,username username_ from user where id = #{id}
</select>

resultType="mybatis.po.User"(一)根據使用者id 查詢使用者資訊

<select id="findUserById" parameterType="int" resultType="mybatis.po.User">
        select * from user where id = #{id}
</select>

resultType的值是一個實體類,返回值是實體的話,保證實體裡面的屬性和資料庫的屬性值是相同的

resultType="mybatis.po.User"(二) 返回的是list

模糊查詢,返回的是list,但是resultType 還是實體類

<!-- 根據使用者名稱稱模糊查詢使用者資訊,可能返回多條 -->
    <select id="findUserByName" parameterType="java.lang.String" resultType="mybatis.po.User">
        select * from user where username like '%${value}%'
    </select>
SqlSession sqlSession = getSession();
//selectList表示查詢出一個列表(多條記錄)進行對映
List<User> list = sqlSession.selectList("test.findUserByName", "張三");
System.out.println(list);
//釋放資源,最好放在finally中,這裡只是測試程式,就不弄了
sqlSession.close();

動態sql

Excutor(執行器):是一個介面,有兩個實現(基本執行器和快取執行器),通過sqlSession 內部通過該執行器操作資料

mappedStatement(底層封裝物件),作用:對操作資料庫儲存封裝,包括sql 語句,輸入引數,輸出結果型別

 1)mybatis 配置需要的jar 包

2)通過SqlMapConfig.xml 來配置jdbc事務管理,資料庫連線池

3)