动态SQL 学习
- <select id="findUser" parameterType="Map" resultType="User">Select * from User where 1=1<if test="id>0">and id = #{id}</if><if test="name!=null">and name like #{name}</if><if test="pwd!=null">and pwd = #{pwd}</if><if test="address_id>0">and address_id = #{address_id}</if></select>
- private SqlSession sqlSession ;private PersonDao persondao;private Logger log = Logger.getLogger(JunitTest.class);@Beforepublic void setUp() throws Exception {sqlSession = SqlSessionFactoryUtil.openSession();persondao = sqlSession.getMapper(PersonDao.class);}@Afterpublic void tearDown() throws Exception {sqlSession.close();}@Testpublic void findUser() {Map<String, Object> map = new HashMap<String, Object>();// map.put("id", 1);map.put("name", "张%");// map.put("pwd", "111111");// map.put("address_id", 1);List<User> list = persondao.findUser(map);for (User user : list) {log.info(user);// System.out.println(user);}
}
- 增删改 返回的是影响的行号
- /*** by 用法*/@Testpublic void findUser2() {Map<String, Object> map = new HashMap<String, Object>();map.put("by", "name");map.put("id", 1);map.put("name", "张%");map.put("pwd", "111111");map.put("address_id", 1);List<User> list = persondao.findUser2(map);for (User user : list) {// log.info(user);System.out.println(user);}
}
- <select id="findUser2" parameterType="Map" resultType="User">select * from User where 1=1<choose><when test="by=='id'">and id = #{id}</when><when test="by=='name'">and name like #{name}</when><when test="by=='pwd'">and pwd = #{pwd}</when><otherwise>and address_id = #{address_id}</otherwise></choose>
</select>
- Where 用法
- select id="findUser3" parameterType="Map" resultType="User">select * from user<where><if test="id>0">and id = #{id}</if><if test="name!=null">and name like #{name}</if><if test="pwd!=null">and pwd = #{pwd}</if></where>
</select>
- Trim 用法
- <select id="findUser4" parameterType="Map" resultType="User">select * from User<trim prefix="where" prefixOverrides="and|or"><if test="id>0">and id = #{id}</if><if test="name!=null">and name like #{name}</if><if test="pwd!=null">and pwd = #{pwd}</if>
</trim>
- foreach 用法
- <select id="findUser5" parameterType="Map" resultType="User">select * from user<where><if test="ids!=null">and id in<!-- 循环遍历的集合名称 ids --><foreach collection="ids" item="id" open="(" close=")"separator=",">#{id}</foreach></if></where>
</select>
- @Testpublic void findUser5() {Map< String,Object> map = new HashMap<String, Object>();List<Integer> list = Arrays.asList(1,2,3,4,5);map.put("ids", list);List<User> list1 = persondao.findUser5(map);for (User user : list1) {// log.info(user);System.out.println(user);}
}
- limit 用法
- SELECT * from `user` LIMIT start,size
- /*** 逻辑分页处理*/@Testpublic void test() {//传递分页参数,offset : 开始位置 limite: 分页大小RowBounds bounds = new RowBounds(0,10);List<User> list = pagedao.findUserByPage(bounds);for (User user : list) {System.out.println(user);}
}
- /*** 物理分页处理*/@Testpublic void test2() {//传递分页参数,offset : 开始位置 limite: 分页大小Map<String, Object> map = new HashMap<String, Object>();map.put("offset", 1);map.put("limit", 10);List<User> list = pagedao.findUserByPage2(map);for (User user : list) {System.out.println(user);}
}
- <!-- 物理分页 查询表中所有的数据 --><select id="findUserByPage2" resultType="User" parameterType="Map">select * from user<if test="offset!=null and limit!=null">limit #{offset} , #{limit}</if>
</select>
动态SQL 学习的更多相关文章
- mybatis原理分析学习记录,mybatis动态sql学习记录
以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...
- 动态SQL(学习笔记)
动态SQL EXECUTE IMMEDIATE 动态SQL字符串 [BUCK COLLECT] INTO 自定义的变量,,|记录类型 USING [IN |OUT|IN OUT]绑定的参数] [RET ...
- MyBatis学习 之 三、动态SQL语句
目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...
- mybatis学习笔记四(动态sql)
直接贴图,注解在代码上,其他的配置文件在学习一中就不贴了 1 数据库 2 实体类 package com.home.entity; /** * 此类是: 用户实体类 * @author hpc * @ ...
- Spring+SpringMVC+MyBatis深入学习及搭建(五)——动态sql
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6908763.html 前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(四)——My ...
- Java数据持久层框架 MyBatis之API学习七(动态 SQL详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- MyBatis学习总结(三)——多表关联查询与动态SQL
在上一章中我们学习了<MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射>,这一章主要是介绍一对一关联查询.一对多关联查询与动态SQL等内容. 一.多表关联查询 表与 ...
- Ibatis.Net 动态SQL语句学习(六)
在学习动态SQL语句之前,首先必须对条件查询有一定了解,先来学习如何向IBatis.Net的映射文件里传入参数吧. 一.条件查询 1.传递单个参数 如根据Id查询: <select id=&qu ...
- MyBatis学习(一)---配置文件,Mapper接口和动态SQL
MyBatis MyBatis官方学习网站 http://www.mybatis.org/mybatis-3/zh/index.html 为什么需要MyBatis? Jdbc操作数据库的不足之处 1. ...
随机推荐
- 忘记mysql root 密码修改小技巧
首先我说一下我的情况,我并不是忘记了我的root密码,只不过是我在使用phpmyadmin的时候更改密码的时候选择了如图1 的这个方法将密码加密并更改了,然后就再次登录的时候登录不上,所以对于菜鸟级的 ...
- entityframework
entityframework扩展: http://entityframework-plus.net/
- 对AutoIt中控件和窗口的理解
经过尝试,对AutoIt中Control和Window有了新的认识,分享一下 1.Control 现在我想对一个WinForm架构的应用程序进行自动化操作,得到控件Advanced Mode属性为[N ...
- C和指针 第十六章 标准函数库 信号
信号名<signal.h> 程序中大多数错误都是程序本身导致的,但是,有些程序遇到的事件却不是程序本身所引发的.比如用户终止程序,程序无法预知此类事件发生的情况,信号就是为了对此类事件做出 ...
- PYTHON 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者
def a3(arg): ret = [ ] for i in range(len(arg)): if i % 2 == 1: ret.append(arg[i]) else: pass return ...
- 【Python网络爬虫二】使用urllib2抓去网页内容
在Python中通过导入urllib2组件,来完成网页的抓取工作.在python3.x中被改为urllib.request. 爬取具体的过程类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求 ...
- android3D动画,绕y轴旋转
原文地址:http://blog.csdn.net/x_i_a_o_h_a_i/article/details/40449847 其实网上的3D旋转的例子很多,在这里我只是想把其代码做一个解释. 先上 ...
- Memcache的增删改查
Memcache是把数据存放到内存的一种缓存技术,为了提高访问的速度,memcache存储的数据一般是频繁.不太重要的数据,php使用memcache,需要两步: (1).php_memcache.d ...
- toast组件小结
简介:toast是"吐司"的意思,它属于android杂项组件,是一个简单的消息提示框,类似于javascript中的alert. 作用 显示文本 显示图片 显示图文 3.常用方法 ...
- matlab更改打开时候默认路径
每次打开matlab都会的修改默认路径,是一件有些烦恼的事情.所以,就想尝试更改默认路径 方法如下: 1.在matlab安装目录,找到toolbox文件夹,打开local文件件,打开matlabrc. ...