zoukankan      html  css  js  c++  java
  • SpringBoot集成MyBatis

    SpringBoot除了可以集成JPA,还可以集成MyBatis。

    MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。

    对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。

    1、注解

    @Mapper
    public interface UserMapper {

    /**
    * keyProperty: 表示将select返回值设置到该属性中
    * resultType: 返回类型
    * before: 是否在insert之前执行
    * statement: 自定义子查询
    * @param userBase
    */
    @SelectKey(keyProperty = "userBase.id",resultType = String.class, before = true,
    statement = "select replace(uuid(), '-', '')")
    @Options(keyProperty = "userBase.id", useGeneratedKeys = true)
    @Insert("insert into user_base(id, " +
    "name, " +
    "passwd, " +
    "phone " +
    ") values (#{userBase.id}, " +
    "#{userBase.name}, " +
    "#{userBase.password}, " +
    "#{userBase.phone}" +
    ") "
    )
    public void insertForReg(@Param("userBase")UserBase userBase);

     
    @Delete("DELETE FROM user WHERE id =#{id}")
    void delete(Long id);
    }

    简化了配置,也更符合Spring Boot的初衷。

    2、配置文件

    编写Mapper

    @Mapper
    public interface UserMapper {
        int insert(@Param("pojo") User pojo);
    
        int insertList(@Param("pojos") List<User> pojo);
    
        int update(@Param("pojo") User pojo);
    }

    编写xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.wang.mybatis.UserMapper">
    
        <!--auto generated Code-->
        <resultMap id="AllColumnMap" type="com.wang.mybatis.User">
            <result column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="hobby" property="hobby"/>
        </resultMap>
    
        <!--auto generated Code-->
        <sql id="all_column">
            `id`,
            `name`,
            `hobby`
        </sql>
    
        <!--auto generated Code-->
        <insert id="insert">
            INSERT INTO `user`
            (`id`,`name`,`hobby`)
            VALUES (#{pojo.id},#{pojo.name},#{pojo.hobby})
        </insert>
    
        <!--auto generated Code-->
        <insert id="insertList">
            INSERT INTO `user`(
            <include refid="all_column"/>
            )VALUES
            <foreach collection="pojos" item="pojo" index="index" separator=",">
                (
                #{pojo.id},
                #{pojo.name},
                #{pojo.hobby}
                )
            </foreach>
        </insert>
    
        <!--auto generated Code-->
        <update id="update">
            UPDATE `user`
            <set>
                <if test="pojo.id != null"> `id` = #{pojo.id}, </if>
                <if test="pojo.name != null"> `name` = #{pojo.name}, </if>
                <if test="pojo.hobby != null"> `pwd` = #{pojo.hobby} </if>
            </set>
            WHERE `id` = #{pojo.id}
        </update>
    
    </mapper>

    配置

    mybatis:
      mapper-locations: classpath*:mapper/*Mapper.xml
      type-aliases-package: com.wang.mybatis

    总结:xml方式比较繁琐,可读性可维护性不强。自动化插件MyBatisCodeHelper可以帮助提高开发效率。

  • 相关阅读:
    架构师时间~白话OAuth2
    vue前端各种问题
    windows命令行导入sql
    正则表达式概述
    XPath语法 在C#中使用XPath示例
    面试宝典
    Repository,UnitOfWork,DbContext(1)
    EF Code First:实体映射,数据迁移,重构(1)
    表单常用的正则表达式
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/ijavanese/p/9573408.html
Copyright © 2011-2022 走看看