添加数据及主键返回
第一种
<!--void insertUser(User user);-->
<!--useGeneratedKeys: 表示该sql使用了自增的主键-->
<!--keyProperty: 将自增的主键的值传给,mapper接口实体类参数user中的某个属性-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into user values(null,#{username},#{password})
</insert>
User user = new User(null,"xx","opefs");
mapper.insertUser(user);
System.out.println(user);
// User{id=6, username='xx', pasword='opefs'}
第二种
@Insert("insert into dish values(null,#{name},#{category_id},#{price},#{code}" +
",#{image},#{description},#{status},'0',#{create_time},#{update_time}," +
"#{create_user},#{update_user},'0')")
@SelectKey(statement="select LAST_INSERT_ID()",keyProperty = "id",before = false,resultType = Long.class)
void save(dishdto dishdto);
// @SelectKey用在被@Insert@InsertProvider@Update@UpdateProvider注解的方法上。否则无效。
// 如果指定了@SelectKey,那么MyBatis会忽略由@Options所设置的生成主键。
// statement:将会被执行的SQL字符串数组
// keyProperty:将会被更新的参数对象的属性的值
// before:true或false指明SQL语句在插入语句的之前还是之后执行
// resultType:keyProperty的Java类型
第三种
@Insert("insert into login_ticket values(null,#{userId},#{token},#{status},#{expired})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insert(LoginToken loginToken);
mybatis批量插入
@Insert("<script> " +
"insert into dish_flavor values " +
"<foreach collection = 'flavors' item = 'item' separator = ','> " +
"(null,#{item.dish_id},#{item.name},#{item.value},#{item.create_time}," +
"#{item.update_time},#{item.create_user},#{item.update_user},'0') " +
"</foreach> " +
"</script>")
int save(@Param("flavors") List<dishflavor> flavors);
注意点:
1.@Param注解,对应 foreach循环接收的参数,必须写。
2.< script >标签,标记是JAVASCRIPT脚本,对 foreach语句进行解析(必须写)。
3.< foreach >标签,必须写
@Insert插入List集合
批量添加记录并返回各记录主键字段值