我是靠谱客的博主 高高期待,最近开发中收集的这篇文章主要介绍MyBatis学习笔记(三)——注解方式的基本使用前言@Select注解@Insert注解@Update注解和@Delete注解Provider注解总结:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

上一篇博客总结了mybatis基于XML配置的用法,传送门。这篇博客总结一下mybatis基于注解的用法。在mybatis的注解中基本就是@Select、@Insert、@Update、@Delete四种注解的使用。本篇博客将会以sys_role表格为实例进行操作。

@Select注解

resultMap方式

在xml使用方式中,resultMap标签对应完成了类型的映射,如下所示:

    <resultMap id="BaseResultMap" type="com.learn.chapterfour.domain.SysUser">
        <result column="id" jdbcType="INTEGER" property="id"/>
        <result column="user_name" jdbcType="VARCHAR" property="userName"/>
        <result column="user_password" jdbcType="VARCHAR" property="userPassword"/>
        <result column="user_email" jdbcType="VARCHAR" property="userEmail"/>
        <result column="user_info" jdbcType="VARCHAR" property="userInfo"/>
        <result column="head_img" jdbcType="BLOB" property="headImg"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
    </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")
    })

后面要引用这个映射结果,就直接使用@ResultMap注解就可以了。

@Select的使用

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

@Insert注解

其实该注解的使用本身很简单,但是设计到主键的返回,就变得有点复杂

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

@insert注解返回自增主键

    /**
     * 自动返回主键,这里不用设置主键,会自动生成主键
     *
     * @param sysRole
     * @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")
    public int insertSysRoleWithAutoIncreament(SysRole sysRole);

和上面的insert方法相比,这个方法中的注解就少了id一列,注解多了一个@Options,其中的两个属性的作用和xml中的作用一致。

@insert注解返回非自增主键

    /**
     * 自动返回主键,但是非自增
     *
     * @param sysRole
     * @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()", keyProperty = "id", resultType = Long.class, before = false)
    public int insertSysRoleWithIdNotAutoIncreament(SysRole sysRole);

返回非自增主键指的是针对没有自增主键的数据库进行操作。

@Update注解和@Delete注解

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

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

Provider注解

MyBatis同时提供了@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider注解,这几个注解也能实现相关的CRUD。

实例:

@SelectProvider(type=PrivilegeProvider.class,method = "selectById")
SysPrivilege selectById(Long id)


public class PrivilegeProvider{
    public String selectById(final long id){
        return new SQL(){
            {
                SELECT("id,privilege_name,privilege_url");
                FROM("sys_privilege");
                WHERE("id=#{id}");
            }
        }.toString
    }
}

Provider的注解中,有两个必填的属性,type,method。type指定的是一个包含method指定的方法的类。这个类必须有空的构造方法。这个方法的返回的值就是需要执行的SQL语句。

总结:

其实熟悉了XML的用法,对于注解的用法还是比较好了解的,总体来看MyBatis的注解使用分为两大类,不同的CRUD注解和Provider注解,可以根据自己的需要选择使用的方式,但是个人觉得Provider注解似乎较好的与业务进行了分离。

完整代码实例移步github(chapter03):https://github.com/liman657/mybatislearn

最后

以上就是高高期待为你收集整理的MyBatis学习笔记(三)——注解方式的基本使用前言@Select注解@Insert注解@Update注解和@Delete注解Provider注解总结:的全部内容,希望文章能够帮你解决MyBatis学习笔记(三)——注解方式的基本使用前言@Select注解@Insert注解@Update注解和@Delete注解Provider注解总结:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部