1. 程式人生 > >Mybatis入門系列之(六)——註解

Mybatis入門系列之(六)——註解

常用的四個註解:@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);