mybatis中sql语句查询操作
动态sql
where if
where可以自动处理第一个and。
<!-- 根据id查询用户信息 -->
<!-- public User findUserById(int id); -->
<select id="findUserById" parameterType="user" resultType="user">
select * from user
<!-- 当有if条件成立时,where会自动拼接查询条件,并处理第一个and -->
<include refid="where_if_if"/>
</select>
<!-- sql片段抽取 -->
<sql id="where_if_if">
<where>
<!-- 动态拼接sql查询条件 -->
<if test="username != null and username != ''">
and username like "%"#{username}"%"
</if>
<if test="sex != null and sex != ''">
and sex = #{sex}
</if>
</where>
</sql>
foreach
向sql传递数组或List,mybatis使用foreach解析
 在pojo中定义list属性ids存储多个用户id,并添加getter/setter方法
<select id="findUserByForeach" parameterType="queryvo" resultType="user">
select * from user
<if test="ids != null and ids.size > 0 ">
<foreach collection="ids" item="id" open="where id in (" separator=", " close=")">
#{id}
</foreach>
</if>
</select>
关联查询
一对一:
案例:查询所有订单信息,关联查询下单用户信息。
- 使用resultType,定义一个新的pojo,使其继承pojoA后包含了pojoA所有字段,在pojo中添加新的字段 
 - 使用resultMap,定义专门的resultMap用于映射一对一查询结果,在pojoA中加入属性
 
association:表示进行关联查询单条记录
property:表示关联查询的结果存储在cn.itcast.mybatis.po.Orders的user属性中
javaType:表示关联查询的结果类型
<id property="id" column="uid"/>:查询结果的uid列对应关联对象的id属性,这里是<id />表示uid是关联查询对象的唯一标识。
<result property="username" column="username"/>:查询结果的username列对应关联对象的username属性。
一对多:
案例:查询所有用户信息,同时关联查询用户的订单信息。
用户信息和订单信息为一对多关系。
- 在User类中加入List orders属性,同时添加get/set方法
 
collection部分定义了用户关联的订单信息。表示关联查询结果集
property="orders":关联查询的结果集存储在User对象的上哪个属性。
ofType="orders":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使用别名,也可以使用全限定名。
<id />及<result/>的意义同一对一查询。

mybatis中sql语句查询操作的更多相关文章
- MyBatis中sql语句
		
一.select <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String&qu ...
 - EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery
		
一.目前EF Core的版本为V2.1 相比较EF Core v1.0 目前已经增加了不少功能. EF Core除了常用的增删改模型操作,Sql语句在不少项目中是不能避免的. 在EF Core中上下文 ...
 - Mybatis中sql语句中的in查询,一定要判断null的情况
		
不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法. select from loanwhere LOAN_ID in <foreach item="item&quo ...
 - Mybatis中sql语句中的in查询,判断null和size为0的情况
		
不严谨的写法,可能会报错:in (),这种情况不符合SQL的语法,导致程序报错. 如果简单只做非空判断,这样也有可能会有问题:本来in一个空列表,应该是没有数据才对,却变成了获取全部数据! 所以一个比 ...
 - mybatis中sql语句传入多个参数方法
		
1 使用map <select id="selectRole" parameterType="map" resultType="RoleMap& ...
 - Mybatis 中 sql 语句的占位符 #{} 和 ${}
		
#{} 表示一个占位符号,通过 #{} 可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换.#{} 可以有效防止 sql注入. #{} ...
 - mybatis中sql语句必须用${}而不能不用#{}的情况
		
在mybatis中如果我们使用#{}的方式编写的sql时,#{} 对应的变量自动加上单引号 ' ' 例如: select * from #{param} 当我们给参数传入值为user时,他的sql是这 ...
 - mybatis中SQL语句运用总结
		
union 连接查询 连接两个表后会过滤掉重复的值 <resultMap id="BaseResultMap" type="com.sprucetec.pay.e ...
 - mybatis 中sql语句传递多个参数
		
Available parameters are [2, 1, 0, param1, param2, param3] <select id="loginByTeacher" ...
 
随机推荐
- 2018南京icpc现场赛心得
			
第一次参加icpc的比赛,也是第一块奖牌,虽然只是铜,但其实打的已经很好了,稍微差一点就可以摸银了. 之前参加省赛,成为那次比赛我校唯一一个没拿奖的队伍,其实还是一直都有一些心结的,而这段时间和新的队 ...
 - ZOJ Monthly, January 2019 Little Sub and his Geometry Problem  ZOJ4082(模拟 乱搞)
			
在一次被自己秀死... 飞机 题目: 给出N,K, Q; 给出一个N*N的矩阵 , 与K个特殊点 , 与Q次查询 , 每次查询给出一个C , 问 在这个N*N矩阵中 , 有多少的点是满足这样的一个关 ...
 - 前端PostJosn,后端转化相应的类
			
/// <summary> /// JsonPost特性类 /// </summary> [AttributeUsage(AttributeTargets.Method, In ...
 - JS中||的某些用法
			
var a = 0 ||'sda';console.log(a);//sda var a = '' ||'sda';console.log(a);//sda
 - JavaScript学习笔记2_面向对象
			
1.对象的定义 ECMAScript中,对象是一个无序属性集,这里的“属性”可以是基本值.对象或者函数 2.数据属性与访问器属性 数据属性即有值的属性,可以设置属性只读.不可删除.不可枚举等等 访问器 ...
 - MYSQL分区表详解
			
分区表对用户来说是一个独立的逻辑表,但是底层是多个物理字表组成的.分区代码实际上是对一组底层表的句柄对象封装.对分区表的请求,都会通过句柄对象转化成储存引擎的接口调用.所以分区对于SQL层来说是一个完 ...
 - NPM, BOWER, GIT, AND BASH PROXY CONFIGURATIONS
			
Sources: http://digitaldrummerj.me/proxy-configurations/ When you are using npm, bower, and git behi ...
 - (转)2017年最新企业面试题之shell(一,二)
			
2017年最新企业面试题之shell(一) ********************************************** 企业Shell面试题1:批量生成随机字符文件名案例 * *** ...
 - 参考美团、饿了么 && localStorage
			
localStorage使用. 为什么要使用 localStorage? 因为在之前的讨论过程中,问题:每次添加一件商品和去掉一个商品都需要发送一个http请求来更新购物车, ...
 - 第三章:ionic环境搭建之windows篇
			
下面是在windows操作系统上面安装ionic的步骤,已经在Windows 10/ 7/ XP下面通过验证. 安装JDK 1.1 下载(http://www.oracle.com/technetwo ...