使用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
<!-- 按照名称查询,用户角色,查询用户列表 mybatis给最基础的数据类型都内建了别名,对大小写是不敏感的 使用map集合的方式-->
<select id="getUserListByUserName3" parameterType="map" resultType="User" >
select * from smbms_user
where username like CONCAT ('%',#{userName1},'%')
and userRole = #{userRole1}
</select>
编写对应的测试类:
@Test
public void test7() {
String userNameString="赵";
Integer userRole=2;
Map<String, String> map = new HashMap<String, String>();
map.put("userName1", "赵");
map.put("userRole1", "3"); SqlSession sqlSession = null;
java.util.List<User> userList2 = new ArrayList<User>();
try {
sqlSession = MyBatisUtil.createSqlSession();
//使用mapper映射的方式实现
//userList2 = sqlSession.selectList("cn.smbms.dao.user.UserMapper.getUserListByUserName",userNameString);
//调用mapper接口的方式实现
userList2 = sqlSession.getMapper(UserMapper.class).getUserListByUserName3(map);
int size = userList2.size();
mlogger.info("获取到的记录数是:" + size); } catch (Exception e) {
// TODO: handle exception
} finally {
// 最后一定要注意:关闭会话
MyBatisUtil.closeSqlSession(sqlSession); }
for (User user2 : userList2) {
mlogger.info("用户名:" + user2.getUserName() + ",密码:" + user2.getUserPassword());
} }
最终的运行结果:

查询数据库:

使用mybatis框架实现带条件查询-多条件(传入Map集合)的更多相关文章
- mybatis框架之多参数入参--传入Map集合
需求:查询出指定性别和用户角色列表下的用户列表信息 实际上:mybatis在入参的时候,都是将参数封装成为map集合进行入参的,不管你是单参数入参,还是多参数入参,都是可以封装成map集合的,这是无可 ...
- 使用mybatis框架实现带条件查询-单条件
之前我们写的查询sql都是没有带条件的,现在来实现一个新的需求,根据输入的字符串,模糊查询用户表中的信息 UserMapper.xml UserMapper.java 与jdbc的比较: 编写测试方法 ...
- 使用mybatis框架实现带条件查询-多条件(传入实体类)
在实际的项目开发中,使用mybatis框架查询的时候,不可能是只有一个条件的,大部分情况下是有多个条件的,那么多个条件应该怎样传入参数: 思考: 需求:根据用户姓名(模糊查询),和用户角色对用户表进 ...
- Mybatis框架六:关联查询
这里搞一个测试场景: 用户和订单,一位用户可以有多个订单,而每个订单只属于一位用户 以用户为中心,相对于订单:一对多 以订单为中心,当对于用户:一对一 两张表结构: 订单表: 用户表: 对应的POJO ...
- mysql按条件查询当条件是数字的时候加不加引号是一样的。
select * from user where id=1 select * from user where id="1" 在查询的注意是否需要加上"";
- MyBatis 传入List集合作为条件查询数据
使用的是SSM框架,数据库是MySQL,做查询的时候传入List集合,使用SQL语句的in方式查询数据 主要有两点问题:我的List集合是利用的另外一个语句查询出来的,传入参数是int类型,返回值是i ...
- 深入学习Mybatis框架(二)- 进阶
1.动态SQL 1.1 什么是动态SQL? 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句. 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句.使用动态SQ ...
- 深入学习Mybatis框架(一)- 入门
1.什么是Mybatis? Mybatis是一个优秀持久层框架,提供了对数据库的一系列操作(增删改查).Mybatis可以避免重复的写JDBC代码,让我们以较少的代码实现对数据库的操作,从而提高开发效 ...
- MyBatis框架 课程笔记
MyBatis框架 课程笔记 第1章 MyBatis简介 1.1 MyBatis历史 1)MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Softw ...
随机推荐
- json对象转js对象
json数据: { "YD1": 0, "YD2": 0, "YD3": 0, "YD4": 0, "YD5& ...
- python学习-33 max和min函数的高级使用
1.简单比较 age_dic={'age1456':15,'age2':16,'xiaohong_age':12,'xiaoming_age4':18,'age5':10} print(max(age ...
- Python实现斐波那契递归和尾递归计算
##斐波那契递归测试 def fibonacciRecursive(deepth): if deepth == 1: return 1 elif deepth == 2: return 1 else: ...
- 【转】ISE——完整工程的建立
FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...
- Java常用函数式接口--Predicate接口使用案例
Java常用函数式接口--Predicate接口使用案例 该方法可以使用and来优化: 调用:
- php中的for循环和js中的for循环
php中的for循环 循环100个0 for ($i=0;$i<=100;$i++){ $pnums.='0'.","; } js中的for循环,循环31个相同的数.循环日期 ...
- jquery.pagination.js分页demo
公用jquery.pagination.js /** * This jQuery plugin displays pagination links inside the selected elemen ...
- 一个牛逼的 Python 调试工具PySnooper
原文转自:https://mp.weixin.qq.com/s/OtLr-cNethboMgmCcUx2pA PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何 ...
- 【转载】 C#中使用decimal.Parse方法将字符串转换为十进制decimal类型
在C#编程过程中,很多时候涉及到数据类型的转换,例如将字符串类型的变量转换为十进制decimal类型就是一个常见的类型转换操作,decimal.Parse方法是C#中专门用来将字符串转换为decima ...
- vue辅助函数mapStates与mapGetters
状态管理器 <!-- store.js: --> import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export de ...