码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis(三)注解方式基本用法

时间:2020-06-09 23:30:34      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:一个   mes   role   内容整理   false   bat   last   HERE   code   

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从入门到精通》

MyBatis(三)注解方式基本用法

标签:一个   mes   role   内容整理   false   bat   last   HERE   code   

原文地址:https://www.cnblogs.com/fantastic-clouds/p/13081446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!