15_动态SQL
【UserMapper.xml】和之前的作对比
<mapper namespace="com.Higgin.Mybatis.mapper.UserMapper"> <!--
用户信息的综合查询(复杂查询)
#{userCustom.sex}:取出pojo包装对象中的"性别"值
#{userCusotm.username}:取出pojo包装类中用户名称
-->
<select id="findUserList" parameterType="com.Higgin.Mybatis.po.UserQueryVo"
resultType="com.Higgin.Mybatis.po.UserCustom">
SELECT * FROM USER WHERE user.sex =#{userCustom.sex} AND user.username LIKE '%${userCustom.username}%'
</select> <!--
用户信息的综合查询(复杂查询)
使用动态SQL的方式
-->
<select id="findUserList2" parameterType="com.Higgin.Mybatis.po.UserQueryVo"
resultType="com.Higgin.Mybatis.po.UserCustom">
SELECT * FROM USER
<where>
<if test="userCustom!=null">
<if test="userCustom.sex!=null and userCustom.sex!=''">
and user.sex=#{userCustom.sex}
</if>
<if test="userCustom.username!=null and userCustom.username!=''">
and user.username LIKE '%${userCustom.username}%'
</if>
</if>
</where>
</select>
</mapper>
【UserMapper.java】接口
public interface UserMapper { //用户信息综合查询findUserList
public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;//动态SQL:用户信息综合查询findUserList2
public List<UserCustom> findUserList2(UserQueryVo userQueryVo) throws Exception;
}
【UserMapperTest.java】测试
/**
* 用户信息的综合查询
* @throws Exception
*/
@Test
public void testFindUserList2() throws Exception { SqlSession sqlSession =sqlSessionFactory.openSession(); //创建一个UserMapper对象,Mybatis自动生成mapper代理对象
UserMapper userMapper=sqlSession.getMapper(UserMapper.class); //创建包装对象,设置查询条件
UserQueryVo userQueryVo=new UserQueryVo();
UserCustom userCustom=new UserCustom(); userCustom.setSex("1");
userCustom.setUsername("6"); //这两句分别被注释,将会忽略被注释的条件进行查询 userQueryVo.setUserCustom(userCustom); //调用UserMapper的方法
List<UserCustom> list=userMapper.findUserList2(userCustom); //传入的参数为null时,不会进行查询,且不会报错!!!之前的方式传入参数为null会报错 System.out.println(list.size());
}
15_动态SQL的更多相关文章
- 值得注意的ibatis动态sql语法格式
一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...
- Mysql - 游标/动态sql/事务
游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...
- MyBatis4:动态SQL
什么是动态SQL MyBatis的一个强大特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了空格或者在列表的最后的 ...
- 分享公司DAO层动态SQL的一些封装
主题 公司在DAO层使用的框架是Spring Data JPA,这个框架很好用,基本不需要自己写SQL或者HQL就能完成大部分事情,但是偶尔有一些复杂的查询还是需要自己手写原生的Native SQL或 ...
- MySQL存储过程动态SQL语句的生成
用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...
- 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】
一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...
- 自定义函数执行动态sql语句
--函数中不能调用动态SQL,使用用存储过程吧.如果还要对函数做其他操作,换成存储过程不方便,可以考虑把其他操作一起封装在存储过程里面.如: create proc [dbo].[FUN_YSCL ...
- mybatis入门基础(五)----动态SQL
一:动态SQL 1.1.定义 mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.2.案例需求 用户信息综合查询列表这个statement的定义使用动态s ...
- mybatis 动态sql表达式相关应用
一.mybatis 表达式简介 对于mybatis3 ,提供了一种动态sql的方式.通过动态sql我们可以直接在mybatis 的xm映射文件中直接通过条件判断的方式进行查询添加的拼接.mybatis ...
随机推荐
- Linux/U-Boot Git Repo
Linux: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git U-Boot: git://git.denx.de/ ...
- [原]ubuntu下制作ubuntu源
ubuntu下可以用debmirror来下载ubuntu的所有源: 配置ubuntu12.04_mirror.sh ########################################## ...
- HW3.21
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- AMQP与QPID简介
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Cocos2d-x 2.0 自适应多种分辨率
转自:http://dualface.github.io/blog/2012/08/17/cocos2d-x-2-dot-0-multi-resolution/ cocos2d-x 2.0 提供一个极 ...
- [Whole Web] [AngularJS] Localize your AngularJS Application with angular-localization
It is best to start your application's localization efforts early in development, even if you only s ...
- 垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
Delphi 是一个基本上被我遗忘的工具, 要不是在使用RapidSql , 我是收不到Embarcadero 公司发出的邀请来參加Delphi XE5的公布会的. 有人可能要问为什么是Embarca ...
- vmtouch - the Virtual Memory Toucher
https://hoytech.com/vmtouch/ [root@localhost ~]# git clone git://github.com/hoytech/vmtouch.git 正克隆到 ...
- android开发之SnackBar的使用
SnackBar是一个类似于Toast的东西,它也有显示时长,但是比Toast更加灵活,同时,我们还可以给SnackBar设置点击事件,那么我们今天就来看看怎么用吧! 先来一张效果图: 这种效果大家可 ...
- 利用Qt制作一个helloworld
使用QT创建第一个 工程: 1.打开应用程序: 2.单击画面中间偏上的 New Project按钮.[要学习使用啊~,传说它的跨平台行很好,QQ就是用它编辑的.] 3.直接点击右下角的选择 按钮. 4 ...