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