mybatis框架-choose when otherwise 的使用
需求:模拟实际业务情况,传入多条件进行查询
/**
	 * 需求:模拟实际业务,用户传入多个条件,进行用户列表信息的查询
	 * @param roleids
	 * @return
	 */
	public List<User> getUserListByMulConditions(@Param("usercode")String usercode,@Param("userName")String userName,@Param("userRole")Integer userRole,@Param("creationDate")java.util.Date date);
<!--模拟多个条件,进行用户列表信息的查询 -->
	<select id="getUserListByMulConditions" resultMap="userListArray" >
	     select * from smbms_user where 1=1 
	     <choose>
	       <when test="userName!=null and userName!='' "> and userName like concat('%',#{userName},'%')</when>
	       <when test="usercode!=null and usercode!='' "> and usercode like concat('%',#{usercode},'%')</when>
	       <when test="userRole!=null and userRole!='' "> and userrole= #{userRole} </when>
	       <otherwise>  and year(creationDate)=year(#{creationDate}) </otherwise>
	     </choose>
	</select>
<resultMap type="User" id="userListArray">
	        <id property="id" column="id"/>
		  <result property="userCode" column="userCode" />
		  <result property="userName" column="userName" />
		  <result property="userRole" column="userRole" />
	</resultMap>
//模拟实际业务情况,传入多条件进行查询
@Test
public void testGetUserListByMulConditions(){
SqlSession sqlSession = null;
String usercode="";
String userName="";
Integer userRole=1; List<User> userListShow=new ArrayList<User>();
try {
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2019-12-22");
sqlSession = MyBatisUtil.createSqlSession();
userListShow = sqlSession.getMapper(UserMapper.class).getUserListByMulConditions(usercode,userName,userRole,date); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
MyBatisUtil.closeSqlSession(sqlSession);
}
for(User user: userListShow){
logger.debug("testGetUserByForeach_Gender_Roleids UserCode: " + user.getUserCode() + " and UserName: " + user.getUserName()+"and userRole:"+user.getUserRole());
} }
运行结果:
[DEBUG] 2019-12-22 17:09:46,696 cn.smbms.dao.user.UserMapper.getUserListByMulConditions - ==> Preparing: select * from smbms_user where 1=1 and userrole= ?
[DEBUG] 2019-12-22 17:09:46,711 cn.smbms.dao.user.UserMapper.getUserListByMulConditions - ==> Parameters: 1(Integer)
[DEBUG] 2019-12-22 17:09:46,723 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@65d0d124]
[DEBUG] 2019-12-22 17:09:46,724 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@65d0d124]
[DEBUG] 2019-12-22 17:09:46,724 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 1708183844 to pool.
[DEBUG] 2019-12-22 17:09:46,724 cn.smbms.dao.user.UserMapperTest - testGetUserByForeach_Gender_Roleids UserCode: admin and UserName: 系统管理员and userRole:1
mybatis框架-choose when otherwise 的使用的更多相关文章
- MyBatis框架——动态SQL、缓存机制、逆向工程
		MyBatis框架--动态SQL.缓存机制.逆向工程 一.Dynamic SQL 为什么需要动态SQL?有时候需要根据实际传入的参数来动态的拼接SQL语句.最常用的就是:where和if标签 1.参考 ... 
- 【Java】关于MyBatis框架的总结
		最近在学习MyBatis框架,我在这里记录一下学习MyBatis过程中的心得体会. Mybatis是什么?使用它我们可以做什么? MyBatis是一个开源的数据持久层框架,它内部封装了通过JDBC访问 ... 
- 关于mybatis框架的总结【转载】
		原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ... 
- 深入学习Mybatis框架(二)- 进阶
		1.动态SQL 1.1 什么是动态SQL? 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句. 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句.使用动态SQ ... 
- MyBatis框架   课程笔记
		MyBatis框架 课程笔记 第1章 MyBatis简介 1.1 MyBatis历史 1)MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Softw ... 
- MyBatis框架——动态SQL
		MyBatis 作为⼀个“半⾃动化”的 ORM 框架,需要开发者⼿动定义 SQL 语句. 在业务需求⽐较复杂的情 况下,⼿动拼接 SQL 语句的⼯作量会⾮常⼤,为了适⽤于不同的业务需求,往往需要做很多 ... 
- SSM框架之MyBatis框架实现简单的增删改查
		MyBatis框架介绍 MyBatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系是一种半自动化的ORM实现,其封装性要低于Hibernate,性能优越,并且小巧,简单易学,应用也 ... 
- mybatis框架整合及逆向工程
		mybatis框架整合及逆向工程 一.三大框架整合  整合SSM框架 1.导入pom文件 1.导入spring的pom依赖 <?xml version="1.0" enco ... 
- 学习mybatis框架>从零开始学JAVA
		目录 学习mybatis框架 mybatis框架的介绍 什么是mybatis框架 为什么要使用mybatis框架 mybatis的优点 Mybatis框架环境搭建 去官网下载jar包 创建一个普通的j ... 
随机推荐
- oracle-DBlink基本操作
			01,查询 查询DBLINK信息 select * from dba_db_links; select owner,object_name from dba_objects where object_ ... 
- tomcat 指定(自定义)JDK路径的两种方式
			1.情景展示 tomcat7使用jdk1.7:tomcat8使用jdk1.8.两个tomcat在一台机器下同时启动,你会发现这两个tomcat使用的是一个版本的jdk, 那就是你配置过的JAVA_ ... 
- Python爬取豆瓣电影top
			Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称 评分 ... 
- springcloud(六,多个服务提供者)
			spring cloud (一.服务注册demo_eureka) spring cloud (二.服务注册安全demo_eureka) spring cloud (三.服务提供者demo_provid ... 
- js原型和原型链,以及__proto__、prototype属性
			__proto__和prototype属性: 1.__proto__属性: 在JS里,万物皆对象(函数是对象.原型也是对象...).对象都具有属性__proto__,这个属性会指向该对象的原型. 2. ... 
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (三)
			本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ... 
- java基础-温故而知新
			1.类和对象(实例)的关系 类就是对象的抽象(模板),对象就是类的实例 2.java设置模式--代理模式 定义:代理就是中介,例如租房子经常有中介,还有出票软件 飞猪,携程. 3.代理大纲分为两种:静 ... 
- linux 内核参数tcp_max_syn_backlog对应的队列最小长度
			环境:centos7.4 内核版本3.10 内核参数net.ipv4.tcp_max_syn_backlog定义了处于SYN_RECV的TCP最大连接数,当处于SYN_RECV状态的TCP连接数超过t ... 
- 视觉融合定位github
			1. obr_slam有关的非常有用的github链接: https://github.com/Ewenwan/MVision/tree/master/vSLAM/oRB_SLAM2 2. gnss, ... 
- AngularJS简介与四大特征
			1.1 AngularJS简介 AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.A ... 
