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 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 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 into role_function values
    	
    		(null,#{roleId},#{finctionId})
    	
 

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

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

@Insert({
	""
	})
void insertRoleAndFunction(@Param("roleId") Integer roleId,@Param("functionIds") Integer[] functionIds);

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

你可能感兴趣的:(Mybatis)