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()); } }