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

  • 相关阅读:
    __proto__和[[Prototype]]的区别
    JavaScript将类数组转换为数组的三种方法
    VMware报错:在该 VMware Workstation 实例中打开了最大数量的标准虚拟机。 必须在打开新的虚拟机
    bd09坐标转wgs84 JS版本 精准度高
    Layui,table,点击tool按钮获取index
    Layui扩展第三方
    Layui,table,获取当前页码数
    solidwork模型格式转为glb并且压缩
    three.js加载模型,鼠标操作模型,点击获取对象信息
    类似若依的springspringboot+vue后端框架
  • 原文地址:https://www.cnblogs.com/fantastic-clouds/p/13081446.html
Copyright © 2020-2023  润新知