使用mybatis框架实现带条件查询-多条件

在实际的项目开发中,使用mybatis框架查询的时候,不可能是只有一个条件的,大部分情况下是有多个条件的,那么多个条件应该怎样传入参数;

思考:

 需求:根据用户姓名(模糊查询),和用户角色对用户表进行查询

UserMapper.xml

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

UserMapper.java

 1 public interface UserMapper {
 2     //查询用户表中的数据
 3     //特别要注意的一点是:Mapper接口中的方法名要和Mapper.xml文件中sql语句的id名称要相同,否则是不行滴
 4     public List<User> getUserList();
 5
 6     //根据用户姓名模糊查询用户表  注意入参要和mapper.xml配置文件中入参保持一致
 7     public List<User> getUserListByUserName(String userName);
 8
 9     //根据用户姓名模糊查询,用户角色,查询用户表  注意:现在的入参一定是对象
10     public List<User> getUserListByUserName2(User user);
11
12
13 }

User.java 实体类

 1 package cn.smbms.dao.pojo;
 2
 3 import java.util.Date;
 4
 5 public class User {
 6     private Integer id; //id
 7     private String userCode; //鐢ㄦ埛缂栫爜
 8     private String userName; //鐢ㄦ埛鍚嶇О
 9     private String userPassword; //鐢ㄦ埛瀵嗙爜
10     private Integer gender;  //鎬у埆
11     private Date birthday;  //鍑虹敓鏃ユ湡
12     private String phone;   //鐢佃瘽
13     private String address; //鍦板潃
14     private Integer userRole;    //鐢ㄦ埛瑙掕壊
15     private Integer createdBy;   //鍒涘缓鑰?
16     private Date creationDate; //鍒涘缓鏃堕棿
17     private Integer modifyBy;     //鏇存柊鑰?
18     private Date modifyDate;   //鏇存柊鏃堕棿
19
20     public Integer getId() {
21         return id;
22     }
23     public void setId(Integer id) {
24         this.id = id;
25     }
26     public String getUserCode() {
27         return userCode;
28     }
29     public void setUserCode(String userCode) {
30         this.userCode = userCode;
31     }
32     public String getUserName() {
33         return userName;
34     }
35     public void setUserName(String userName) {
36         this.userName = userName;
37     }
38     public String getUserPassword() {
39         return userPassword;
40     }
41     public void setUserPassword(String userPassword) {
42         this.userPassword = userPassword;
43     }
44     public Integer getGender() {
45         return gender;
46     }
47     public void setGender(Integer gender) {
48         this.gender = gender;
49     }
50     public Date getBirthday() {
51         return birthday;
52     }
53     public void setBirthday(Date birthday) {
54         this.birthday = birthday;
55     }
56     public String getPhone() {
57         return phone;
58     }
59     public void setPhone(String phone) {
60         this.phone = phone;
61     }
62     public String getAddress() {
63         return address;
64     }
65     public void setAddress(String address) {
66         this.address = address;
67     }
68     public Integer getUserRole() {
69         return userRole;
70     }
71     public void setUserRole(Integer userRole) {
72         this.userRole = userRole;
73     }
74     public Integer getCreatedBy() {
75         return createdBy;
76     }
77     public void setCreatedBy(Integer createdBy) {
78         this.createdBy = createdBy;
79     }
80     public Date getCreationDate() {
81         return creationDate;
82     }
83     public void setCreationDate(Date creationDate) {
84         this.creationDate = creationDate;
85     }
86     public Integer getModifyBy() {
87         return modifyBy;
88     }
89     public void setModifyBy(Integer modifyBy) {
90         this.modifyBy = modifyBy;
91     }
92     public Date getModifyDate() {
93         return modifyDate;
94     }
95     public void setModifyDate(Date modifyDate) {
96         this.modifyDate = modifyDate;
97     }
98 }

编写测试类:

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

最终的运行结果:

这里要强调一下,以上的都是数据库字段的名称和实体类的名称是相一致的。

不一致的情况在下面会进行讨论。

原文地址:https://www.cnblogs.com/dongyaotou/p/11783146.html

时间: 2024-11-05 20:47:36

使用mybatis框架实现带条件查询-多条件的相关文章

好947 Mybatis 配置resultMap 带参数查询Map 注意selectOne数据库返回结果一条数据库 否则会报错

//TMD 写几个demo 还有大站采集 <a target=_blank href="http://hao947.com/" target="_blank">好947</a> 映射配置文件 <!-- type:映射实体类的数据类型 id:resultMap的唯一标识 --> <RESULTMAP id=BaseResultMap type="person"><pre name="c

mybatis框架学习-多表查询

啰里巴嗦 mybatis中的多表查询 表之间的关系有几种: 一对多 多对一 一对一 多对多 举例: 用户和订单就是一对多 订单和用户就是多对一 一个用户可以下多个订单 多个订单属于同一个用户 人和身份证号就是一对一 一个人只能有一个身份证号 一个身份证号只能属于一个人 老师和学生之间就是多对多 一个学生可以被多个老师教过 一个老师可以交多个学生 特例: 如果拿出每一个订单,他都只能属于一个用户. 所以Mybatis就把多对一看成了一对一. mybatis中的多表查询: 示例:用户和账户 一个用户

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

我们发现我们可以通过传入javaBean的方式实现我们的需求,但是就两个条件,思考:现在就给他传入一个实体类,对系统性能的开销是不是有点大了. 现在改用传入Map集合的方式: 奥!对了,在创建map集合时候,居然报错了,The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class. 是因为myeclipse的jdk和你安装的jdk的版本不一致导致的,只要将两者调成

NHibernate之旅(4):探索查询之条件查询(Criteria Query)

本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Example) 实例分析 结语 上一节,我们介绍了NHibernate查询语言的一种:NHibernate查询语言(HQL,NHibernate Query Language),这一节介绍一下条件查询(Criteria API). NHibernate中的查询方法 在NHibernate中提供了三种查

hibernate之条件查询

一.条件查询简介 条件查询是更据面向对象特色的数据查询方式,主要通过如下3个类完成 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类 执行条件查询的步骤 1.获取Hibernate session对象 2.调用session的createCriteria()方法创建Criteria查询对象 3.使用Restrictions的静态方法创建Criterion查询条件 4.通过Criteria的add()方法添加查询条件到

[转]NHibernate之旅(4):探索查询之条件查询(Criteria Query)

本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Example) 实例分析 结语 上一节,我们介绍了NHibernate查询语言的一种:NHibernate查询语言(HQL,NHibernate Query Language),这一节介绍一下条件查询(Criteria API). NHibernate中的查询方法 在NHibernate中提供了三种查

nhibernate教程(4)--条件查询(Criteria Query)

NHibernate之旅(4):探索查询之条件查询(Criteria Query) 2008-10-16 18:20 by 李永京, 44341 阅读, 43 评论, 收藏,  编辑 本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Example) 实例分析 结语 上一节,我们介绍了NHibernate查询语言的一种:NHibernate查询语言(H

8.修改 按条件查询商品 分页

修改商品的原理图 jsp页面 edit.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <HTML> <HEAD> <meta http-equiv="Content-Langua

MyBaits基本操作,为什么session.commit()可以引起事物提交?ResultMap结果映射,执行添加后返回自增列的值,多条件查询,智能标签,工具类

1.为什么session.commit()可以引起事务的提交? 首先打开commit()源码,ctrl+H打开它的实现类DefaultSession,找到它的commit方法 ctrl+左键executor,进入它的接口并打开它的实现类BaseExecutor 在最底层的commit()方法里边进行了事务的提交,所以SqlSession.commit()方法可以引起事务的提交 2.ResultMap结果映射 为什么需要ResultMap? 因为DB中的Table的列名和Java对象中的属性名不一