背景 考虑以下场景: InfoTable(信息表): Name Gender Age Score 张三 男 21 90 李四 女 20 87 王五 男 22 92 赵六 女 19 94 孙七 女 23 88 周八 男 20 91 StatusTable(状态表,指是否有在考试之前复习): Name hasReview 张三 是 李四 否 王五 是 赵六 是 孙七 否 周八 是 现在,我想知道所有复习过的学生的成绩,可以利用mysql中的子查询来实现: SELECT Score FROM Info…
MyBatis<forEach>标签的使用 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis.当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中,用名称作为键.List 实例将会以“list”作为键,而数组实例将会以“array”作为键. foreach元素的属性主要有 item,index,collection,open,separator,close.  item表示集合中每一个元素进行迭代时的别名, index指定一个名字,用于表示在迭代过程中,每次…
有时候开发中需要根据多个ID去查询,可以将ID封装为List或者数组然后使用MyBatis中的foreach标签构建in条件. 这里我将ID封装为String[]作为参数. <select id="selectList" parameterType="java.util.List" resultType="java.lang.Integer"> SELECT COUNT(1) FROM t_user WHERE id IN <f…
一.批量插入数据 示例:添加订单商品表 1.模型层的相应代码 /** * 添加订单商品表 * @param ordergoods * @return */ public boolean addOrdergood(List<Ordergood> ordergoods){ return session.insert(Ordergood.class.getName()+".addOrdergood", ordergoods)>0; } 2.xml文件 <!--添加订单…
From<MyBatis从入门到精通> 一.foreach实现in集合 1.映射文件中添加的代码: <!-- 4.4 foreach用法 SQL语句有时会使用IN关键字,例如id in {1,2,3}.可以使用id in #{ids}方式直接 获取值,但是这种写法不能防止SQL注入,想避免SQL注入就需要用#{}的方式,这时就需要 配合使用foreach标签来满足需求. foreach可以对数组,map或实现了Iterable接口(如List.Set)的对象进行遍历.数组 在处理时会转换…
mapper.xml如下: <select id="selectCkspcb" parameterType="java.util.Map" resultType="java.util.Map"> SELECT COALESCE (pg.goodsid, 0) spbm, COALESCE (pg.goodsname, '') spmc, COALESCE ( ( SELECT classname FROM pub_goodsclass…
情景:查询数据库中文章的相关文章   文章为一个表 字段tags为相关文章字符串中间用','逗号进行啦分割 查询完一个文章后可以把tags字段构造为一个List<String> 然后利用这个集合作为条件来查询 <select id="selectTestForEach" parameterType="News" resultMap="NewsResultMapper"> select * from t_news n whe…
foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.info.details.具体说明:在list和数组中是其中的对象,在map中是value.该参数为必选. collection 要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象用map代替作为键.当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,…
Mybatis批量insert 返回主键 Mybatis从3.3.1版本开始,支持批量插入后返回主键ID.首先对于支持自增主键的数据库使用useGenerateKeys和keyProperty,对于不支持生成自增主键的数据库使用selectKey标签.类似<MyBatis 返回insert操作主键>中单条插入. 使用批量插入,可以减少和数据库交互的次数,但是,数据量应该做一个控制,和for循环类似.首先定义Java Bean Instance: import java.io.Serializa…
转:http://www.cnblogs.com/lixiujie/p/5766669.html <resultMap>标签的使用:这个类似于hibernte用于映射我们创建的vo对象与数据库字段的对应. 关于具体的使用参考此博文: http://blog.csdn.net/bear_wr/article/details/52383840 mybatis where标签的使用 where后面跟查询条件 简化sql语句中判断条件的书写 例: <select id="user&qu…
foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代.如下: <delete id="deleteBatch"> delete from user where id in <foreach collection="array" item="id" index="index" open="(" close=")" separator=",&qu…
标签太多,记一下不是特别常用的标签~留着脑袋瓜不机灵的时候看! <foreach>标签  该标签的作用是遍历集合类型的条件 <select id="countByUserList" parameterType="list"> SELECT COUNT(*) FROM users WHERE user_id IN <foreach item="userList" collection="list"…
MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据.如:使用foreach来拼接in子语句. 在学习MyBatis Mapper文件的foreach标签时我们先看看DTD是如何定义的?DTD代码如下: <!-- 定义foreach元素 --> <!ELEMENT foreach (#PCDATA | include | trim | where | set | foreach | choose | if |…
http://zhangxiong0301.iteye.com/blog/2242723 最近有个需求,就是使用mybatis时,向mysql中插入数据,其参数为map类型,map里面的key为列名,而key对应的value是该列对应的列值:问题是每次插入mysql中数据行的部分列,即map里面key的值每次都不固定,在用mybatis时需要通过map的key作为列名. 基础知识 对于这类问题基本思路就是用foreach标签遍历map,因此需要看看foreach的知识. foreach属性 属性…
今天写sql发现了一点问题,乱弄了好久算是搞定了.关于mybatis的批量插入使用foreach插入形式为: insert into role_privilege( role_id, privilege_id,last_edit) values ( ?, ?, ? ),( ?, ?, ? ),( ?, ?, ? ): 而不不希望是这样的 insert into role_privilege( role_id, privilege_id,last_edit) values ( ?, ?, ? )…
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用foreach标签生成动态的Sql,主要包含以下3个场景: foreach 实现in集合 foreach 实现批量插入 foreach 实现动态update 1. foreach 实现in集合 假设有这样1个需求:根据传入的用户id集合查询出所有符合条件的用户,此时我们需要使用到Sql中的IN,如 id in (1,100…
foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量.它也允许你指定开头与结尾的字符串以及在迭代结果之间放置分隔符.这个元素是很智能的,因此它不会偶然地附加多余的分隔符. 注意 你可以将任何可迭代对象(如 List.Set 等).Map 对象或者数组对象传递给 foreach 作为集合参数.当使用可迭代对象或者数组时,index 是当前迭代的次数,item 的值是本次迭代获取的元素.当使用 Map 对象(或者 Map.Ent…
一.查询给定集合中员工id对应的所有员工信息 示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import org.apache.ibatis.annotations.Param; import java.util.List; public interface EmployeeMapper { //查询员工id在给定集合中的所有员工信息 public List<Employee> getEmpsByC…
需求:查出给定id的记录: <select id="getEmpsByConditionForeach" resultType="com.test.beans.Employee"> SELECT * FROM tb1_emplyee WHERE id IN <foreach collection="list" item="item_id" separator="," open="…
<if>标签 1.判断非空或不等于 <if test="assessTypes!= null and assessTypes!='' "> AND FIND_IN_SET(t1.assess_type,#{assessTypes}) </if> 2.判断等于某个固定字符 <if test='rankWay=="byAssessDate" and isDesc=="1" '> ORDER BY t1.…
1. 定义sql语句 1.1 select 标签 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) <select id="selectByPrimaryKey" resultMap="BaseResultMa…
一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的 是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) 例子: sql: <select id="userList" parameterType="user&qu…
一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的 是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) 例子: sql: <select id="userList" parameterType="user&qu…
mybatis xml文件中一些标签的使用 此标签主要用作 配置 "别名" 如果实体类与数据库中字段名在不区分大小写的情况下相同的话, 那就不需要配置resultMap,因为mysql数据库不区分大小写,所以可以直接映射上 但是如果实体类与数据库中字段名不相同的话,我们可以由三个解决方案 直接修改数据库字段名,使之与实体类对应上 在程序中配置文件中对sql语句改造,起别名,使之与实体类映射上 (直接操作sql语句效率更高) 如: select gender as usergender,…
MyBatis常用标签 ● 定义sql语句:select.insert.delete.update ● 配置JAVA对象属性与查询结构及中列明对应的关系:resultMap ● 控制动态sql拼接:if.foreach.choose ● 格式化输出:where.set.trim ● 配置关联关系:collection.association ● 定义常量及引用:sql.include MyBatis提供了对SQL语句动态的组装能力,大量的判断都可以在 MyBatis的映射XML文件里面配置,以达…
1. 定义sql语句 select 标签 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) <select id="selectByPrimaryKey" resultMap="BaseResultMap&qu…
Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年8月24日 10:18:51 星期三 http://fanshuyao.iteye.com/ 一.问题描述: 查询时,需要获取时间区间内的数据,如下: &l…
mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分割时,最终拼接的代码形式为:insert into table_name (a,b,c) values (v1,v2,v3) ,(v4,v5,v6) ,... separator设置为"union all"分割时,最终拼接的代码形式为:insert into table_name (a,b…
1.MyBatis 别名标签 如果在映射文件中,大量使用类名比较长,可以在sqlMapConfig.xml声明别名, 在映射文件中可以使用别名缩短配置,注意此配置要放在最前面 sqlMapConfig.xml中: <!-- 声明别名 --> <typeAliases> <typeAlias type="cn.tedu.mybatis.beans.User" alias="Alias_User"/> </typeAliases…
直接上代码: 整体需求就是: 1.分页对象里面有map map里面又有数组对象 2.分页对象里面有list list里面有map map里面有数组对象. public class Page { private Map maps; private List lists; public Map getMaps() { return maps; } public void setMaps(Map maps) { this.maps = maps; } public List getLists() {…