MyBatis學習(二)
阿新 • • 發佈:2017-10-19
唯一標識 erl int exception pojo color turn rop session
一、輸入輸出映射
1、輸入類型parameterType
1.1 傳遞基本類型
1.2 傳遞POJO對象
使用ONGL表達式解析對象字段的值,#{}或者${}中的值為POJO屬性的名稱 user.username
1.3 傳遞POJO包裝對象QueryVo
查詢條件是多個查詢條件的綜合
1.3.1 QueryVo
public class QueryVo { private User user; public User getUser() { returnuser; } publicvoid setUser(User user) {this.user = user; } }
1.3.2 UserMapper.xml
<!-- 使用包裝類型查詢用戶 使用ognl從對象中取屬性值,如果是包裝對象可以使用.操作符來取內容部的屬性 --> <select id="findUserByQueryVo" parameterType="com.guojie.pojo.QueryVo" resultType="user"> SELECT * FROM user where username like ‘%${user.username}%‘ and sex=#{user.sex}</select>
1.3.3 UserMapper接口中
public List<User> findUserByQueryVo(QueryVo vo);
1.3.4 測試
@Test public void testFindUserByQueryVo() throws Exception { SqlSession sqlSession = sessionFactory.openSession(); //獲得mapper的代理對象,通過getMapper方法實例化接口 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//創建QueryVo對象 QueryVo queryVo = new QueryVo(); //創建user對象 User user = new User(); user.setUsername("劉"); user.setSex("1"); queryVo.setUser(user);
//根據queryvo查詢用戶 List<User> list = userMapper.findUserByQueryVo(queryVo); System.out.println(list); sqlSession.close();
}
2、輸出類型resultType
2.1 輸出基本類型
2.1.1 UserMapper.xml
<!-- 獲取用戶列表總數 --> <select id="findUserCount" resultType="int"> select count(*) from user </select>
2.1.2 UserMapper接口
public int findUserCount() throws Exception;
2.1.3 測試
Public void testFindUserCount() throws Exception{ //獲取session SqlSession session = sqlSessionFactory.openSession(); //獲取mapper接口實例 UserMapper userMapper = session.getMapper(UserMapper.class); int count = userMapper.findUserCount(); //關閉session session.close(); }
2.2 輸出POJO對象
2.3 輸出POJO列表
3、resultMap(用List可取代)
resultType需要POJO屬性和sql查詢的列名一致才能將查詢結果映射為POJO
resultMap在POJO屬性和sql查詢的列名不一致時也行,可用於映射復雜類型的POJO
<select id="selectOrderList" resultMap="orders"> select user_id, user_name from user </select>
<resultMap type="Orders" id="orders"> <result column="user_id" property="userId"> </resultMap>
id:結果集的唯一標識
property:POJO類的屬性
column:sql字段
二、動態sql
通過MyBatis提供的各種標簽方法實現動態拼接sql
POJO:不按MVC分層,只有JavaBean的一些屬性和setter&getter
Domain:不按MVC分層,只有JavaBean的一些屬性和setter&getter
PO:用於持久層,在增加或者修改的時候,從頁面直接傳入action中,其中JavaBean類名等於表名,屬性名等於字段名,還有對應的setter&getter
VO:View Object表現層對象,主要用於在高級查詢中從頁面接收傳過來的各種條件參數,好處是擴展性強
BO:在Service,現在基本不用
MyBatis學習(二)