使用mybatis框架实现带条件查询-多条件(传入Map集合)

Posted dongyaotou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mybatis框架实现带条件查询-多条件(传入Map集合)相关的知识,希望对你有一定的参考价值。

我们发现我们可以通过传入javaBean的方式实现我们的需求,但是就两个条件,思考:现在就给他传入一个实体类,对系统性能的开销是不是有点大了。

现在改用传入Map集合的方式;

奥!对了,在创建map集合时候,居然报错了,The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class。

是因为myeclipse的jdk和你安装的jdk的版本不一致导致的,只要将两者调成一致的就可以了。

 

 

 

 

 我这里将jdk的版本都调成了1.6的了,大家没有遇到这种问题最好了,如果遇到了,随便,只要将jdk的版本调成一致的就ok。

下面接着正题:

UserMapper.java

 

 

 

 

 UserMapper.xml

1   <!-- 按照名称查询,用户角色,查询用户列表 mybatis给最基础的数据类型都内建了别名,对大小写是不敏感的  使用map集合的方式-->
2     <select id="getUserListByUserName3" parameterType="map" resultType="User" >
3         select * from smbms_user
4          where username like CONCAT (\'%\',#{userName1},\'%\') 
5          and userRole = #{userRole1}
6     </select>

编写对应的测试类:

 1 @Test
 2     public void test7() {
 3         String userNameString="赵";
 4         Integer userRole=2;
 5         Map<String, String> map = new HashMap<String, String>();
 6         map.put("userName1", "赵");
 7         map.put("userRole1", "3");
 8     
 9         SqlSession sqlSession = null;
10         java.util.List<User> userList2 = new ArrayList<User>();
11         try {
12             sqlSession = MyBatisUtil.createSqlSession();
13             //使用mapper映射的方式实现
14             //userList2 = sqlSession.selectList("cn.smbms.dao.user.UserMapper.getUserListByUserName",userNameString);
15             //调用mapper接口的方式实现
16             userList2 = sqlSession.getMapper(UserMapper.class).getUserListByUserName3(map);
17             int size = userList2.size();
18             mlogger.info("获取到的记录数是:" + size);
19 
20         } catch (Exception e) {
21             // TODO: handle exception
22         } finally {
23             // 最后一定要注意:关闭会话
24             MyBatisUtil.closeSqlSession(sqlSession);
25 
26         }
27         for (User user2 : userList2) {
28             mlogger.info("用户名:" + user2.getUserName() + ",密码:" + user2.getUserPassword());
29         }
30 
31     }

最终的运行结果:

 

 查询数据库:

以上是关于使用mybatis框架实现带条件查询-多条件(传入Map集合)的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis多条件查询看这一篇就够了

mybatis框架-choose when otherwise 的使用

MybatisPlus分页条件查询

mybatis框架,使用foreach实现复杂结果的查询--循环List集合方式

mybatis05--多条件的查询

MyBatis多条件查询动态SQL多表操作注解开发详细教程