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可以按照这种格式参考来写~