MyBatis注解方式基本用法

Posted Fantastic_Clouds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis注解方式基本用法相关的知识,希望对你有一定的参考价值。

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注解方式基本用法的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis 注解方式的基本用法

MybatisMyBatis 注解方式的基本 用法

): MyBatis注解方式的基本使用

MyBatis从入门到精通

Mybatis:Mybatis注解开发单表操作(代码实例)

阶段3 1.Mybatis_02.Mybatis入门案例_3 mybatis注解开发和编写dao实现类的方式