Hibernate 根据写好的 pojo启动服务器会自动帮助我们生成对应的数据表。
        Mybatis Generator简称 MBG,是一个专门为 MyBatis和 ibatis框架使用者提供的代码生成器。也可以快速的根据数据表生成对应的pojo类、Mapper接口、Mapper文件,甚至生成QBC风格的查询对象。
        一般在项目中,根据MyBatis Generator的XML配置文件设置生成简单的CRUD,但是复杂的查询或者有关关联的操作还是需要我们写SQL完成。


新建一个 maven web项目,pom.xml引出 mybatis-generator依赖

<!-- mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    <!-- mybatis-generator -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.7</version>
    </dependency>

    <!-- mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
    </dependency>

Bash

Copy

一、使用 targetRuntime="MyBatis3Simple" 生成

       MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample
1、MBG 的配置文件,一般起名为 generatorConfig.xml:一般项目中使用这些就OK

<?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>

    <!--targetRuntime用MyBatis3, 也就是默认的-->
    <context id="mysqlTables" targetRuntime="MyBatis3Simple">

        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--jdbc的数据库连接-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true;characterEncoding=utf8;useSSL=true;serverTimezone=GMT"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!--非必须,Java类型解析器,在数据库类型和java类型之间的转换控制-->
        <javaTypeResolver>
            <!--
                true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
                false:默认,
                    scale>0;length>18:使用BigDecimal;
                    scale=0;length[10,18]:使用Long;
                    scale=0;length[5,9]:使用Integer;
                    scale=0;length<5:使用Short;      -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- java模型创建器,即配置生成java POJO实体类的位置
               负责:1,key类(见context的defaultModelType);2,java类;3,查询类
               targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
               targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录
        -->
        <javaModelGenerator targetPackage="cn.jq.jqmybatis.model" targetProject=".\src\main\java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下(即是否允许子包),默认为false -->
            <property name="enableSubPackages" value="true"/>
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- Mapper映射生成器,即配置生成生成XxxMapper.xml的位置 -->
        <sqlMapGenerator targetPackage="cn.jq.jqmybatis.dao" targetProject=".\src\main\java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--Mapper接口生成器, 即配置生成生成的 Mapper接口的位置,注意,如果没有配置该元素,那么默认不会生成Mapper接口
                type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
                    1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
                    2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
                    3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
                注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="cn.jq.jqmybatis.dao" targetProject=".\src\main\java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 指定数据库中的数据表(可同时指定多张表)进行生成 -->
        <!--字段命名策略过程: table标签对应数据库中的table表-->
        <table tableName="t_user" domainObjectName="User"></table>
        <table tableName="t_role" domainObjectName="Role"></table>

    </context>
</generatorConfiguration>

Bash

Copy

2、MBG启动类:使用 Java代码运行,也可使用 Maven插件运行
     固定写法,可参考官方文档:http://www.mybatis.org/generator/running/runningWithJava.html

public class App {

    public static void main(String[] args) {
        try {
            App app = new App();
            app.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public  void generator() throws Exception{
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        // 指定 逆向工程配置文件,这两种都可以
        String path = this.getClass().getClassLoader().getResource("generatorConfig.xml").getPath();
        File configFile = new File(path);
//        File configFile = new File("D:/JDWorkspaceIDEA19/jqmybatis/src/main/resources/generatorConfig.xml");

        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }

}

Bash

Copy

3、生成的文件

      

mbtiles插件下载 mbb插件怎么设置_mbtiles插件下载

<?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="cn.jq.jqmybatis.dao.UserMapper">
  <resultMap id="BaseResultMap" type="cn.jq.jqmybatis.model.User">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="pazzword" jdbcType="VARCHAR" property="pazzword" />
    <result column="salary" jdbcType="DECIMAL" property="salary" />
    <result column="reg_date" jdbcType="TIMESTAMP" property="regDate" />
  </resultMap>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    delete from t_user
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="cn.jq.jqmybatis.model.User">
    insert into t_user (id, username, pazzword, 
      salary, reg_date)
    values (#{id,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, #{pazzword,jdbcType=VARCHAR}, 
      #{salary,jdbcType=DECIMAL}, #{regDate,jdbcType=TIMESTAMP})
  </insert>
  <update id="updateByPrimaryKey" parameterType="cn.jq.jqmybatis.model.User">
    update t_user
    set username = #{username,jdbcType=VARCHAR},
      pazzword = #{pazzword,jdbcType=VARCHAR},
      salary = #{salary,jdbcType=DECIMAL},
      reg_date = #{regDate,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    select id, username, pazzword, salary, reg_date
    from t_user
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectAll" resultMap="BaseResultMap">
    select id, username, pazzword, salary, reg_date
    from t_user
  </select>
</mapper>

Bash

Copy

二、使用 targetRuntime="MyBatis3" 生成

       MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample

       把 MBG配置文件 那里改为 MyBatis3 即可,启动类一样,需要生成那张表,运行它即可

    

mbtiles插件下载 mbb插件怎么设置_mbtiles插件下载_02

   

mbtiles插件下载 mbb插件怎么设置_xml_03

<?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="cn.jq.jqmybatis.dao.UserMapper">
  <resultMap id="BaseResultMap" type="cn.jq.jqmybatis.model.User">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="pazzword" jdbcType="VARCHAR" property="pazzword" />
    <result column="salary" jdbcType="DECIMAL" property="salary" />
    <result column="reg_date" jdbcType="TIMESTAMP" property="regDate" />
  </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