1.<select>節點介紹
id:命名空間中的唯一標識符,可以被用來引用這條語句
parameterType:表示查詢語句傳入參數的類型的完全限定名或別名,支持基礎數據類型和復雜數據類型。
resultType:查詢語句返回結果類型的完全限定名或別名。
※以上是內建的類型別名,還可以為自定義的類設置別名:詳情見
2.使用select完成單條件查詢
(1)SQL映射文件
<!-- 根據id查詢用戶,獲取User --> <select id="getUserById" parameterType="int" resultType="User"> select * from easybuy_user where id=#{id} </select>
(2)UserMapper接口
//根據id查詢用戶 public User getUserById(int id) throws Exception;
(3)UserServiceImpl.java
//根據id查詢用戶 @Override public User getUserById(int id) { SqlSession session = null; User user = new User(); try { session = MybatisUtil.createSqlSession(); user = session.getMapper(UserMapper.class).getUserById(id); session.commit(); } catch (Exception e) { e.printStackTrace(); if (session != null) { session.rollback(); } } finally { if (session != null) { session.close(); } } return user; }
3.使用select完成多條件查詢
a.將查詢條件封裝成對象入參
(1)SQL映射文件
<!-- 模糊查詢用戶姓名 角色 --> <select id="getUserListByUser" parameterType="User" resultType="User"> select * from smbms_user where userName like concat('%',#{userName},'%') and userRole=#{userRole} </select>
(2)UserMapper接口
//根據條件查詢用戶 public List<User> getUserListByUser(User user);
(3)UserServiceImpl.java
/** * 獲取用戶名包含"用戶"同時用戶類型為3的用戶列表 * 方法一:多個參數用對象來查詢 */ @Test public void testGetUserListByUser(){ SqlSession session = null; List<User> userList = null; try { session = MybatisUtil.createSqlSession(); User user1 = new User(); /*動態SQL中的where標簽設置條件*/ user1.setUserName("用戶"); user1.setUserRole("1"); userList=session.getMapper(UserMapper.class).getUserListByUser(user1); session.commit(); } catch (Exception e) { e.printStackTrace(); if (session != null) { session.rollback(); } } finally { if (session != null) { session.close(); } } for(User user : userList){ log.debug("user =====> "+user.getUserName()); } }
b.將查詢條件封裝成Map對象入參
(1)SQL映射文件
<!-- 根據條件查詢用戶 --> <!-- 注意#{map的key值} --> <select id="getUserListByMap" parameterType="Map" resultType="User"> select * from smbms_user where userName like concat('%',#{uName},'%') and userRole = #{uRole} </select>
(2)UserMapper接口
//根據條件查詢用戶 public List<User> getUserListByMap(Map<String,String> map);
(3)UserService.java
/** * 獲取用戶名包含"用戶"同時用戶類型為3的用戶列表 * 方法二:多個參數用Map來查詢 */ @Test public void testGetUserListByMap(){ SqlSession session = null; List<User> userList = null; try { session = MybatisUtil.createSqlSession(); Map<String, String> userMap = new HashMap<String,String>(); //動態SQL,注意看運行出來的SQL語句變化 userMap.put("uName", "用戶"); userMap.put("uRole", "1"); userList = session.getMapper(UserMapper.class) .getUserListByMap(userMap); session.commit(); } catch (Exception e) { e.printStackTrace(); if (session != null) { session.rollback(); } } finally { if (session != null) { session.close(); } } for(User user : userList){ log.debug("user =====> "+user.getUserName()+user.getUserRoleName()); } }