Mybatis入門系列之(六)——註解
阿新 • • 發佈:2018-12-25
常用的四個註解:@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);