Fantastic_Clouds

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

MyBatis除了支持XML方式以外,还支持注解方式,可将SQL语句直接写在接口上。

优点:对于需求比较简单的系统效率较高。

缺点:当SQL有变化时都需要重新编译代码。

 

一、@Select注解

1、基本用法

    @Select({
            "select id, role_name, enabled, create_by, create_time ",
            "from sys_role ",
            "where id = #{id}"
    })
    SysRole selectById(Long id);

2、使用resultMap方式

    @Results(id = "roleResultMap", value = {
            @Result(property = "id", column = "id", id = true),
            @Result(property = "roleName", column = "role_name"),
            @Result(property = "enabled", column = "enabled"),
            @Result(property = "createBy", column = "create_by"),
            @Result(property = "createTime", column = "create_time")
    })
    @Select({
            "select id, role_name, enabled, create_by, create_time ",
            "from sys_role ",
            "where id = #{id}"
    })
    SysRole selectById2(Long id);

3、复用resultMap

当多个接口返回相同的resultMap时,无需再每一个接口方法上都添加@Results注解,可通过将待复用的resultMap添加id属性,然后在其他接口方法上通过id来指向通过一个引用,即可实现复用。

    @ResultMap("roleResultMap")
    @Select("select * from sys_role")
    List<SysRole> selectAll();

 

二、@Insert注解

1、不需要返回主键

    @Insert({"insert into sys_role (id, role_name, enabled, create_by, create_time)",
            "values (#{id}, #{roleName}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP})"})
    int insert(SysRole sysRole);

2、返回自增主键

    @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 sysRole);

3、返回非自增主键

    @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()",
            keyProperty = "id",
            resultType = Long.class,
            before = false)
    int insert3(SysRole sysRole);

 

三、@Update注解

    @Update({"update sys_role",
            "set role_name = #{roleName},",
                "enabled = #{enabled},",
                "create_by = #{createBy},",
                "create_time = #{createTime, jdbcType=TIMESTAMP}",
            "where id = #{id}"
    })
    int updateById(SysRole sysRole);

 

四、@Delete注解

    @Delete("delete from sys_role where id = #{id}")
    int deleteById(Long id);

 

以上内容整理自《MyBatis从入门到精通》

posted on 2020-06-09 22:38  Fantastic_Clouds  阅读(481)  评论(0编辑  收藏  举报