zoukankan      html  css  js  c++  java
  • 【Mybatis】【2】generate批量生成实体类,数据库接口类和mapper

    前言:

    1,实体类之类如果自己写的话,比较繁琐,还容易出错,所以用generate自动生成

    2,int类型可能会生成为short类型,建议不要手动改回int类。因为下次生成又是short类型了,可能会对代码有影响,每次都更改又比较麻烦

    正文:

    用法:点击generate.bat即可执行,如果报错,需要看执行的信息,就用命令行执行

    注:有的时候再次生成mapper之后,启动项目会报错。删除生成的mapper文件,重新生成一次就好了

    jar包:ojdbc6.jar(这是oracle的驱动jar包,mysql是mysql-connector-java-3.1.12-bin.jar),mybatis-generator-core-1.3.2.jar(网盘链接:https://pan.baidu.com/s/1sE3wAbbcXLCmMvY_OfSw5g 提取码:qy2p )

    generatorConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
    <classPathEntry location="G:libojdbc6.jar" /> <!-- 数据库驱动jar包 -->
      <context id="context1">
        <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"></plugin> <!-- 翻页 -->
        <commentGenerator>
          <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection connectionURL="jdbc:oracle:thin:@172.1.1.0:1521/test" driverClass="oracle.jdbc.driver.OracleDriver" userId="test" password="test" /> <!-- 数据库账号密码 -->
        <javaTypeResolver>
              <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <javaModelGenerator targetPackage="com.bf.doctor.entity" targetProject="G:BFDoctorSourcesrcmainjava" /> <!-- 实体类 -->
        <sqlMapGenerator targetPackage="mybatis.mapper" targetProject="G:BFDoctorSourcesrcmain
    esources" /> <!-- 数据库xml文件 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.bf.doctor.dao.mapper"  targetProject="G:BFDoctorSourcesrcmainjava" /><!-- 数据库接口文件 -->
    
        <table tableName="A" /> <!-- 表名 -->
        
        <!-- 
        <table tableName="A" />
        <table tableName="B" />
        <table tableName="C" /> 
        --> <!-- 全部表名,用完不要删除,之后生成单个表就拿出去 -->
      </context>
    
    </generatorConfiguration>

    generate.bat

    java -jar G:libmybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

    生成的文件:

    实体类Test

    package com.bf.doctor.entity;
    
    public class Test {
        private String id;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    }

    映射TestExample

    package com.bf.doctor.entity;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestExample {
        protected String orderByClause;
    
        protected boolean distinct;
    
        protected List<Criteria> oredCriteria;
    
        public TestExample() {
            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(String value) {
                addCriterion("ID =", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdNotEqualTo(String value) {
                addCriterion("ID <>", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdGreaterThan(String value) {
                addCriterion("ID >", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdGreaterThanOrEqualTo(String value) {
                addCriterion("ID >=", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdLessThan(String value) {
                addCriterion("ID <", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdLessThanOrEqualTo(String value) {
                addCriterion("ID <=", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdLike(String value) {
                addCriterion("ID like", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdNotLike(String value) {
                addCriterion("ID not like", value, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdIn(List<String> values) {
                addCriterion("ID in", values, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdNotIn(List<String> values) {
                addCriterion("ID not in", values, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdBetween(String value1, String value2) {
                addCriterion("ID between", value1, value2, "id");
                return (Criteria) this;
            }
    
            public Criteria andIdNotBetween(String value1, String value2) {
                addCriterion("ID not between", value1, value2, "id");
                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);
            }
        }
    }

    数据库接口TestMapper 

    package com.bf.doctor.dao.mapper;
    
    import java.util.List;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.session.RowBounds;
    
    public interface TestMapper {
        int countByExample(TestExample example);
    
        int deleteByExample(TestExample example);
    
        int insert(Test record);
    
        int insertSelective(Test record);
    
        List<Test> selectByExampleWithRowbounds(TestExample example, RowBounds rowBounds);
    
        List<Test> selectByExample(TestExample example);
    
        int updateByExampleSelective(@Param("record") Test record, @Param("example") TestExample example);
    
        int updateByExample(@Param("record") Test record, @Param("example") TestExample example);
    }

    数据库mapper

    <?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.bf.doctor.dao.mapper.TestMapper" >
      <resultMap id="BaseResultMap" type="com.bf.doctor.entity.Test" >
        <result column="ID" property="id" jdbcType="VARCHAR" />
      </resultMap>
      <sql id="Example_Where_Clause" >
        <where >
          <foreach collection="oredCriteria" item="criteria" separator="or" >
            <if test="criteria.valid" >
              <trim prefix="(" suffix=")" prefixOverrides="and" >
                <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 collection="criterion.value" item="listItem" open="(" close=")" 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="(" suffix=")" prefixOverrides="and" >
                <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 collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                        #{listItem}
                      </foreach>
                    </when>
                  </choose>
                </foreach>
              </trim>
            </if>
          </foreach>
        </where>
      </sql>
      <sql id="Base_Column_List" >
        ID
      </sql>
      <select id="selectByExample" resultMap="BaseResultMap" parameterType="com.bf.doctor.entity.TestExample" >
        select
        <if test="distinct" >
          distinct
        </if>
        <include refid="Base_Column_List" />
        from TEST
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
        <if test="orderByClause != null" >
          order by ${orderByClause}
        </if>
      </select>
      <delete id="deleteByExample" parameterType="com.bf.doctor.entity.TestExample" >
        delete from TEST
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
      </delete>
      <insert id="insert" parameterType="com.bf.doctor.entity.Test" >
        insert into TEST (ID)
        values (#{id,jdbcType=VARCHAR})
      </insert>
      <insert id="insertSelective" parameterType="com.bf.doctor.entity.Test" >
        insert into TEST
        <trim prefix="(" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            ID,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            #{id,jdbcType=VARCHAR},
          </if>
        </trim>
      </insert>
      <select id="countByExample" parameterType="com.bf.doctor.entity.TestExample" resultType="java.lang.Integer" >
        select count(*) from TEST
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
      </select>
      <update id="updateByExampleSelective" parameterType="map" >
        update TEST
        <set >
          <if test="record.id != null" >
            ID = #{record.id,jdbcType=VARCHAR},
          </if>
        </set>
        <if test="_parameter != null" >
          <include refid="Update_By_Example_Where_Clause" />
        </if>
      </update>
      <update id="updateByExample" parameterType="map" >
        update TEST
        set ID = #{record.id,jdbcType=VARCHAR}
        <if test="_parameter != null" >
          <include refid="Update_By_Example_Where_Clause" />
        </if>
      </update>
      <select resultMap="BaseResultMap" parameterType="com.bf.doctor.entity.TestExample" id="selectByExampleWithRowbounds" >
        select
        <if test="distinct" >
          distinct
        </if>
        <include refid="Base_Column_List" />
        from TEST
        <if test="_parameter != null" >
          <include refid="Example_Where_Clause" />
        </if>
        <if test="orderByClause != null" >
          order by ${orderByClause}
        </if>
      </select>
    </mapper>

    参考博客:

    1,mybatis三剑客之mybatis-generator生成数据对象和时间戳优化 - xyphf的博客 - CSDN博客
    https://blog.csdn.net/xyphf/article/details/81229636

  • 相关阅读:
    php : Warning: strftime(): It is not safe to rely on the system's timezone settings.
    php : DOM 操作 XML
    php : 基础(3)
    php : 基础(2)
    阿里云物联网平台体验(NetGadgeteer+C#篇)
    阿里云物联网平台体验(树莓派+Nodejs篇)
    阿里云物联网平台体验(树莓派+Python篇)
    【MVP时间】5节课助你破解物联网硬件接入难点
    破解物联网落地困境-阿里云硬件接入最佳实践
    从端到云——工业物联网项目全栈快速开发实践
  • 原文地址:https://www.cnblogs.com/huashengweilong/p/10725166.html
Copyright © 2011-2022 走看看