美文网首页
mybatis的基础应用

mybatis的基础应用

作者: 轻舞凋零 | 来源:发表于2022-07-03 15:40 被阅读0次

    mybatis入门

    mybatis解决的问题

    • xml或者配置映射sql,执行sql,返回对象

    mybatis的xml方式

    定义resultMap

        <resultMap id="userMap" type="tk.mybatis.simple.model.SysUser">
            <id property="id" column="id"/>
            <result property="userName" column="user_name"/>
            <result property="userPassword" column="user_password"/>
            <result property="userEmail" column="user_email"/>
            <result property="userInfo" column="user_info"/>
            <result property="headImg" column="head_img" jdbcType="BLOB"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        </resultMap>
    

    xml支持select,insert,update,delete

        <select id="selectById" resultMap="userMap">
            select * from sys_user where id = #{id}
        </select>
    
    <insert id="insert2" useGeneratedKeys="true" keyProperty="id">
            insert into sys_user(
                user_name, user_password, 
                <if test="userEmail != null">
                    <if test="userEmail != ''">
                    user_email, 
                    </if>
                </if>
                user_info, head_img, create_time)
            values(
                #{userName}, #{userPassword}, 
                <if test="userEmail != null">
                    <if test="userEmail != ''">
                    #{userEmail}, 
                    </if>
                </if>
                #{userInfo}, #{headImg, jdbcType=BLOB}, #{createTime, jdbcType=TIMESTAMP})
        </insert>
    
    <update id="updateById">
            update sys_user 
            set user_name = #{userName},
                user_password = #{userPassword},
                user_email = #{userEmail},
                user_info = #{userInfo},
                head_img = #{headImg, jdbcType=BLOB},
                create_time = #{createTime, jdbcType=TIMESTAMP}
            where id = #{id}
        </update>
    
        <delete id="deleteById">
            delete from sys_user where id = #{id}
        </delete>
    

    mybatis的注解方式

    注解方式写sql和provider注解

    @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}")
    
    @Insert({"insert into sys_role(role_name, enabled, create_by, create_time)", 
        "values(#{roleName}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP})"})
        @Options(useGeneratedKeys = true, keyProperty = "id")
    
    @Update({"update sys_role",
                 "set role_name = #{roleName},",
                     "enabled = #{enabled},",
                     "create_by = #{createBy},",
                     "create_time = #{createTime, jdbcType=TIMESTAMP}",
                 "where id = #{id}"
            })
    
    @Delete("delete from sys_role where id = #{id}")
    
    
    
        public String selectById(final Long id){
            return new SQL(){
                {
                    SELECT("id, privilege_name, privilege_url");
                    FROM("sys_privilege");
                    WHERE("id = #{id}");
                }
            }.toString();
        }
    
    
    

    mybatis的动态SQL

    if choose(when, otherwise,trim,where,set,foreach,bind)

    mybaits的代码生成器

    支持生成代码

    mybatis的高级查询

    一对一使用join和association标签

    一对多collection标签

    mybatis的缓存

    一级缓存:单个sqlsession有效

    二级缓存:各类插件

    ehcache和redis

    mybatis的插件开发

    拦截器接口

    public interface Interceptor {
    
     # 拦截器方法调用
      Object intercept(Invocation invocation) throws Throwable;
    
      #要拦截的对象
      Object plugin(Object target);
    
      #设置配置
      void setProperties(Properties properties);
    }
    
    #拦截器前面
    @Intercepts(
        @Signature(
            type = Executor.class, 
            method = "query", 
            args = {MappedStatement.class, Object.class, 
                    RowBounds.class, ResultHandler.class}
        )
    )
    

    拦截4类接口:Executor,ParameterHandler,ResultSetHandler,StatementHandler

    spring集成mybatis

    <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
    </dependency>
    

    springboot集成mybatis

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
            </dependency>
    

    11 mybatis开源项目

    https://github.com/mybatis/mybatis-3

    相关文章

      网友评论

          本文标题:mybatis的基础应用

          本文链接:https://www.haomeiwen.com/subject/hpjkbrtx.html