SpringBoot2.x整合MyBatisGenerator


【简介】

本文介绍如何整合Mybatis自动生成代码的插件MybatisGenerator

因为MybatisGenerator生成的代码和xml有些臃肿,实际开发中请优先选择SpringBoot2.x整合MyBatis-Plus 或 SpringBoot2.x整合MyBatis通用Mapper4

【本文 Demo】

https://github.com/qidasheng2012/springboot2.x_ssm/tree/branch-generator

【引入插件】

需要在pom.xml文件中的中加入以下设置

<plugin>
    <groupId>org.mybatis.generatorgroupId>
    <artifactId>mybatis-generator-maven-pluginartifactId>
    <version>1.3.7version>
    
    <dependencies>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.18version>
            <scope>runtimescope>
        dependency>
    dependencies>
    
    <configuration>
        
        <configurationFile>src/main/resources/generatorConfig.xmlconfigurationFile>
        
        
        <overwrite>trueoverwrite>
    configuration>
plugin>

引入依赖后右侧的maven project侧边栏中的Plugins选项会多出一个mybatis-generator
SpringBoot2.x整合MyBatisGenerator_第1张图片

【设置配置文件】

接下来在resources文件夹中创建一个generatorConfig.xml文件用于自动构建代码的配置



<generatorConfiguration>
    <context id="MySQLTables" targetRuntime="MyBatis3" defaultModelType="flat">

        
        <commentGenerator>
            
            <property name="suppressAllComments" value="true"/>
            
            <property name="suppressDate" value="true"/>
        commentGenerator>

        
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/ssm?serverTimezone=Asia/Shanghai" userId="root" password="123456"/>

        
        
        
        <javaModelGenerator targetPackage="com.springboot.ssm.domain" targetProject="src/main/java">
            
            <property name="enableSubPackages" value="true"/>
            
            <property name="trimStrings" value="true"/>
            
            <property name="constructorBased" value="false"/>
            
            <property name="immutable" value="false"/>
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            
            <property name="enableSubPackages" value="true"/>
        sqlMapGenerator>

        
        <javaClientGenerator type="mapper" targetPackage="com.springboot.ssm.mapper" targetProject="src/main/java">
            
            <property name="enableSubPackages" value="true"/>
        javaClientGenerator>

        
        <table tableName="teacher">table>
    context>
generatorConfiguration>

【运行插件】

配置就结束了,最后运行一下,这里找到在Maven Projectmybatis-generator:generator选项,双击运行
SpringBoot2.x整合MyBatisGenerator_第2张图片

【结果】

SpringBoot2.x整合MyBatisGenerator_第3张图片
【Teacher】

package com.springboot.ssm.domain;

public class Teacher {
     
    private Integer id;

    private String name;

    public Integer getId() {
     
        return id;
    }

    public void setId(Integer id) {
     
        this.id = id;
    }

    public String getName() {
     
        return name;
    }

    public void setName(String name) {
     
        this.name = name == null ? null : name.trim();
    }
}

【TeacherExample】

package com.springboot.ssm.domain;

import java.util.ArrayList;
import java.util.List;

public class TeacherExample {
     
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public TeacherExample() {
     
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
     
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
     
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
     
        this.distinct = distinct;
    }

    public boolean isDistinct() {
     
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
     
        return oredCriteria;
    }

    public void or(Criteria criteria) {
     
        oredCriteria.add(criteria);
    }

    public Criteria or() {
     
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
     
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
     
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
     
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
     
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
     
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
     
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
     
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
     
            return criteria;
        }

        public List<Criterion> getCriteria() {
     
            return criteria;
        }

        protected void addCriterion(String condition) {
     
            if (condition == null) {
     
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
     
            if (value == null) {
     
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
     
            if (value1 == null || value2 == null) {
     
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
     
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
     
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Integer value) {
     
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Integer value) {
     
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Integer value) {
     
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
     
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Integer value) {
     
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Integer value) {
     
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Integer> values) {
     
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Integer> values) {
     
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Integer value1, Integer value2) {
     
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Integer value1, Integer value2) {
     
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andNameIsNull() {
     
            addCriterion("name is null");
            return (Criteria) this;
        }

        public Criteria andNameIsNotNull() {
     
            addCriterion("name is not null");
            return (Criteria) this;
        }

        public Criteria andNameEqualTo(String value) {
     
            addCriterion("name =", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameNotEqualTo(String value) {
     
            addCriterion("name <>", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameGreaterThan(String value) {
     
            addCriterion("name >", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameGreaterThanOrEqualTo(String value) {
     
            addCriterion("name >=", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameLessThan(String value) {
     
            addCriterion("name <", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameLessThanOrEqualTo(String value) {
     
            addCriterion("name <=", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameLike(String value) {
     
            addCriterion("name like", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameNotLike(String value) {
     
            addCriterion("name not like", value, "name");
            return (Criteria) this;
        }

        public Criteria andNameIn(List<String> values) {
     
            addCriterion("name in", values, "name");
            return (Criteria) this;
        }

        public Criteria andNameNotIn(List<String> values) {
     
            addCriterion("name not in", values, "name");
            return (Criteria) this;
        }

        public Criteria andNameBetween(String value1, String value2) {
     
            addCriterion("name between", value1, value2, "name");
            return (Criteria) this;
        }

        public Criteria andNameNotBetween(String value1, String value2) {
     
            addCriterion("name not between", value1, value2, "name");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {
     

        protected Criteria() {
     
            super();
        }
    }

    public static class Criterion {
     
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
     
            return condition;
        }

        public Object getValue() {
     
            return value;
        }

        public Object getSecondValue() {
     
            return secondValue;
        }

        public boolean isNoValue() {
     
            return noValue;
        }

        public boolean isSingleValue() {
     
            return singleValue;
        }

        public boolean isBetweenValue() {
     
            return betweenValue;
        }

        public boolean isListValue() {
     
            return listValue;
        }

        public String getTypeHandler() {
     
            return typeHandler;
        }

        protected Criterion(String condition) {
     
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
     
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
     
                this.listValue = true;
            } else {
     
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
     
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
     
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
     
            this(condition, value, secondValue, null);
        }
    }
}

【TeacherMapper】

package com.springboot.ssm.mapper;

import com.springboot.ssm.domain.Teacher;
import com.springboot.ssm.domain.TeacherExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TeacherMapper {
     
    long countByExample(TeacherExample example);

    int deleteByExample(TeacherExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Teacher record);

    int insertSelective(Teacher record);

    List<Teacher> selectByExample(TeacherExample example);

    Teacher selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Teacher record, @Param("example") TeacherExample example);

    int updateByExample(@Param("record") Teacher record, @Param("example") TeacherExample example);

    int updateByPrimaryKeySelective(Teacher record);

    int updateByPrimaryKey(Teacher record);
}

【TeacherMapper.xml】



<mapper namespace="com.springboot.ssm.mapper.TeacherMapper">
  <resultMap id="BaseResultMap" type="com.springboot.ssm.domain.Teacher">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
  resultMap>
  <sql id="Example_Where_Clause">
    <where>
      <foreach collection="oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  foreach>
                when>
              choose>
            foreach>
          trim>
        if>
      foreach>
    where>
  sql>
  <sql id="Update_By_Example_Where_Clause">
    <where>
      <foreach collection="example.oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  foreach>
                when>
              choose>
            foreach>
          trim>
        if>
      foreach>
    where>
  sql>
  <sql id="Base_Column_List">
    id, name
  sql>
  <select id="selectByExample" parameterType="com.springboot.ssm.domain.TeacherExample" resultMap="BaseResultMap">
    select
    <if test="distinct">
      distinct
    if>
    <include refid="Base_Column_List" />
    from teacher
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    if>
  select>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from teacher
    where id = #{id,jdbcType=INTEGER}
  select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from teacher
    where id = #{id,jdbcType=INTEGER}
  delete>
  <delete id="deleteByExample" parameterType="com.springboot.ssm.domain.TeacherExample">
    delete from teacher
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    if>
  delete>
  <insert id="insert" parameterType="com.springboot.ssm.domain.Teacher">
    insert into teacher (id, name)
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR})
  insert>
  <insert id="insertSelective" parameterType="com.springboot.ssm.domain.Teacher">
    insert into teacher
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      if>
      <if test="name != null">
        name,
      if>
    trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=INTEGER},
      if>
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      if>
    trim>
  insert>
  <select id="countByExample" parameterType="com.springboot.ssm.domain.TeacherExample" resultType="java.lang.Long">
    select count(*) from teacher
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    if>
  select>
  <update id="updateByExampleSelective" parameterType="map">
    update teacher
    <set>
      <if test="record.id != null">
        id = #{record.id,jdbcType=INTEGER},
      if>
      <if test="record.name != null">
        name = #{record.name,jdbcType=VARCHAR},
      if>
    set>
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    if>
  update>
  <update id="updateByExample" parameterType="map">
    update teacher
    set id = #{record.id,jdbcType=INTEGER},
      name = #{record.name,jdbcType=VARCHAR}
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    if>
  update>
  <update id="updateByPrimaryKeySelective" parameterType="com.springboot.ssm.domain.Teacher">
    update teacher
    <set>
      <if test="name != null">
        name = #{name,jdbcType=VARCHAR},
      if>
    set>
    where id = #{id,jdbcType=INTEGER}
  update>
  <update id="updateByPrimaryKey" parameterType="com.springboot.ssm.domain.Teacher">
    update teacher
    set name = #{name,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  update>
mapper>

本文参考自:https://www.jianshu.com/p/9cdb9c913c69

你可能感兴趣的:(SpringBoot)