一:mybatis的IN查询
foreach属性主要有item,index,collection,open,separator,close。
1、item表示集合中每一个元素进行迭代时的别名,
2、index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
3、open表示该语句以什么开始,
4、separator表示在每次进行迭代之间以什么符号作为分隔符,
5、close表示以什么结束,
6、collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:
a、如果传入的是单参数且参数类型是一个List的时候,collection属性值为list(注意是List,Set类型不行) .例子:
names为入参List<String> names
<select id="selectByNames" parameterType="String" resultType="User"> SELECT * FROM User WHERE name IN <foreach collection="list" index="index" item="names" open="(" separator="," close=")"> #{names} </foreach> </select>
b、如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .例子:
names为入参String[] names
<select id="selectByNames" parameterType="String" resultType="User"> SELECT * FROM User WHERE name IN <foreach collection="array" index="index" item="names" open="(" separator="," close=")"> #{names} </foreach> </select>
二:insert返回自增主键
在开发中新增一条数据后需要返回数据库自增的ID,解决方法:
例子:新增User 返回自增主键ID (keyProperty和userGeneratedKeys为关键配置,数据库的ID主键必须设置为自增)
<insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="User"> insert into sys_user(name,age,address) values (#{name},#{age},#{address}) </insert>