SpringBoot-MyBatis注解&& 批量操作&&获取添加id

SpringBoot-MyBatis注解

增删改查注解

把在xml里面写的内容写到注解当中,Results相当于ResultMap,有些列名与Java的属性名不一致,数据无法线束,
用results解决,中间用,分割

@Results({
		@Result(id = true,column = "列名",property = "属性名"),
		@Result(id = false, column = "列名",property = "属性名")
	})

id 如果不是主键那么设置为false,如果id 是主键 那么设置为true;
column 是数据库中列的名称
property 是java中model类的属性名

@Select("select * from function")
@Results({
			@Result(id = true,column = "id",property = "id"),
			@Result(id = false, column = "is_effective",property = "isEffective")
		})
public List<Function> findAll();


@Delete("delete from function where id = #{id}")
public void deleteById(Integer id);

@Insert("insert into function value (null,#{name},#{url},0)")
public void insert(Function function);

@Update("update function set name = #{name},url = #{url},is_effective = #{isEffective} where id = #{id}")
public void update(Function function);

@Select("select * from function where id = #{id}")
@Results({
	@Result(id = true,column = "id",property = "id"),
	@Result(id = false,column = "is_effective",property = "isEffective")
})
public Function findById(Integer id);

注解一对一

@Result(id=false,column="department_id",property="department",
one=@One(fetchType=FetchType.EAGER,
select="com.zhiyou100.mapper.DepartmentMapper.findById")),

@Result(id=false,column="doctor_id",property="doctor",
one=@One(fetchType=FetchType.EAGER,   // 懒加载模式
select="com.zhiyou100.mapper.DoctorMapper.findById")),

注解多对多

@Result(id=false,column="id",property="users",many = @Many(fetchType=FetchType.EAGER,
select="com.zhiyou1	00.mapper.UserMapper.findByRoleId")),
 })
  @Select("select * from role order by id desc limit #{start},#{size}")
  public List<Role> findByPage(@Param ("start")int start,@Param("size")int size);

想要获取到当前添加的数据的主键

在@Insert注解下面加一个@Options注解

@Insert("insert into role values(null,#{role},0)")
@Options(useGeneratedKeys=true,keyProperty="id")
void insert(Role role);

useGeneratedKeys 表示是否 是主键值增长 true为是,
keyProperty : 保存在java中的哪个属性当中。
keyColumn :保存在数据库中的哪一列

注解式批量添加数据

在***.xml中 我们可以采用 标签

<insert id="insertRoleAndFunction">
    insert into role_function values
    	<foreach collection="functionIds" item="finctionId" separator=",">
    		(null,#{roleId},#{finctionId})
    	</foreach>
 </insert>

collection 代表的是集合的类型 :
array :数组
list :List
map :Map
item 相当于java中的 i 变量
separator 表示分隔符,

而在Mybatis中
我们也可以用这种方式在进行批量操作

@Insert({
	"<script>",
	"insert into role_function(id,role_id,function_id) values",
	"<foreach collection='functionIds' item = 'id' separator = ','>",
	"(null,#{roleId},#{id})",
	"</foreach>",
	"</script>"
	})
void insertRoleAndFunction(@Param("roleId") Integer roleId,@Param("functionIds") Integer[] functionIds);

不仅添加如此,所有的CRUD可以按照这种格式参考来写~

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值