常用的四个注解:@Select,@Insert,@Update,@Delete
@Select
在tk.mybatis.simple.mapper.RoleMapper接口中增加如下方法:
/**
* 根据id查询角色信息
*
* 数据库字段名和javaBean的属性名对应关系的解决办法:
* 1. 查询使用别名
* 2. 开启驼峰映射(配置 mapUnderscoreToCamelCase)
* 3. 使用resultMap的方式
* @param id
* @return
*/
@Select("select id,role_name roleName,enabled," +
"create_by createBy,create_time createTime " +
"from sys_role where id = #{id}")
SysRole selectById(Long id);
/**
* 根据id查询角色信息:使用resultMap的方式解决字段匹配问题
* @param id
* @return
*/
@Results(id="roleResultMap",value = { @Result(property = "id",column = "id",id = true),
@Result(property = "role_name",column = "roleName"),
@Result(property = "enabled",column = "enabled"),
@Result(property = "create_by",column = "createBy"),
@Result(property = "create_time",column = "createTime")
})
@Select("select id,role_name,enabled,create_by,create_time from sys_role where id = #{id}")
SysRole selectById2(Long id);
/**
* 查询所有的角色
*
* @ResultMap("roleResultMap"),引用了方法selectById2上面定义的resultMap,通过id引用。
* @return
*/
@ResultMap("roleResultMap")
@Select("select * from sys_role")
List<SysRole> selectAll();
测试代码略去。。。
@Insert
@Insert注解本身简单,但是如果需要返回主键值,情况变得复杂一点
不需要返回主键
/** * 添加一条记录,不返回主键 * @param role * @return */ @Insert("insert into sys_role(id,role_name,enabled,create_by,create_time) values" + "(#{id},#{roleName},#{enabled},#{createBy},#{createTime,jdbcType=TIMESTAMP})") int insert(SysRole role);
返回自增主键
/** * 添加一条记录,返回自增主键 * * 和insert方法相比,插入语句少了id列 * * @param role * @return */ @Insert("insert into sys_role(role_name,enabled,create_by,create_time) values" + "(#{roleName},#{enabled},#{createBy},#{createTime,jdbcType=TIMESTAMP})") @Options(useGeneratedKeys = true,keyProperty = "id") int insert2(SysRole role);
返回非自增主键
/** * 添加一条记录,返回非自增主键 * * 和insert方法相比,插入语句少了id列 * * @param role * @return */ @Insert("insert into sys_role(role_name,enabled,create_by,create_time) values" + "(#{roleName},#{enabled},#{createBy},#{createTime,jdbcType=TIMESTAMP})") @SelectKey(statement = "SELECT LAST_INSERT_ID()",before = false,keyProperty = "id",keyColumn = "id",resultType = Long.class) int insert3(SysRole role);
测试代码略去……..
@Update
简单,直接看java代码:
/**
* 根据id更新角色
* @param role
* @return
*/
@Update("UPDATE sys_role set " +
"role_name = #{roleName}," +
"enabled = #{enabled}," +
"create_by = #{createBy}," +
"create_time = #{createTime,jdbcType=TIMESTAMP}" +
"where id = #{id}")
int updateById(SysRole role);
@Delete
简单,直接看java代码:
/**
* 根据id删除角色
* @param id
* @return
*/
@Delete("delete from sys_role where id = #{id}")
int deleteById(Long id);