关于后端:Mybatis系列教材-二十六-相关概念-Generator-用法

3次阅读

共计 5603 个字符,预计需要花费 15 分钟才能阅读完成。


步骤 1: 简介
步骤 2: 先运行,看到成果,再学习
步骤 3: 模拟和排错
步骤 4: 基于后面的知识点
步骤 5:jar
步骤 6: 配置文件
步骤 7:TestMybatisGenerator
步骤 8:TestMybatis
步骤 9: 局限性

步骤 1 : 简介

Mybatis Generator 是一个用于 Mybatis 逆向工程的工具。
后面学习的形式都是先有 pojo, mapper, xml, 而后再创立表。

用逆向工程的形式,首先保障 数据库里有表,而后通过 Mybatis Generator 生成 pojo, mapper 和 xml。

能够节约大家的工夫,进步开发效率,升高出错几率

步骤 2 : 先运行,看到成果,再学习

老规矩,先下载下载区 (点击进入) 的可运行我的项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的成果。

运行 TestMybatisGenerator 类,就能够察看到 pojo,mapper 和 xml 都生成了,而后再运行 TestMybatis 进行查问测试。

如图所示,运行 TestMybatisGenerator 之后,刷新我的项目能够看到主动生成的相干文件

注: CategoryExample 这个是用于多条件查问的,在 TestMybatis 中有演示

步骤 3 : 模拟和排错

在确保可运行我的项目可能正确无误地运行之后,再严格照着教程的步骤,对代码模拟一遍。
模拟过程不免代码有出入,导致无奈失去冀望的运行后果,此时此刻通过比拟 正确答案 (可运行我的项目) 和本人的代码,来定位问题所在。
采纳这种形式,学习有成果,排错有效率,能够较为显著地晋升学习速度,跨过学习路上的各个槛。

举荐应用 diffmerge 软件,进行文件夹比拟。把你本人做的我的项目文件夹,和我的可运行我的项目文件夹进行比拟。
这个软件很牛逼的,能够晓得文件夹里哪两个文件不对,并且很显著地标记进去
这里提供了绿色装置和应用教程:diffmerge 下载和应用教程

步骤 4 : 基于后面的知识点

基于 Mybatis 入门 这个知识点进行

步骤 5 : jar

须要额定的 Mybatis Generator jar 包(mybatis-generator-core-1.3.5.jar),在下载区 (点击进入) 下载,下载后放在 lib 目录下,并导入我的项目

导包方法:右键 project->properties->java build path->libaries->add external jars

步骤 6 : 配置文件

在 src 目录下创立 generatorConfig.xml

这个配置文件有如下作用
1. 指定 mysql jdbcjar 包的地位, 这里用的地位是 e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar
2. 设置数据库链接账号密码
3. 指定 pojo,mapper,xml 别离生成的包名
4. 指定表名以及表名对应的类名
4.1 应用自增长键:

<property name="my.isgen.usekeys" value="true"/>
<generatedKey column="id" sqlStatement="JDBC"/>

注 1:如果 IDE(eclipse 或者 idea) 我的项目里导入了 jar 包,那就不须要么第一步那样配置 jar 包的绝对路径了

<?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>
    <!-- 数据库驱动 -->
    <!--
        如果 IDE(eclipse 或者 idea) 我的项目里导入了 jar 包,那么就不须要配置了 jar 包的绝对路径了
         <classPathEntry    location="e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar"/>
    -->
    <context id="DB2Tables"    targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!-- 数据库链接地址账号密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/how2java" userId="root" password="admin">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成 Model 类寄存地位 -->
        <javaModelGenerator targetPackage="com.how2java.pojo" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件寄存地位 -->
        <sqlMapGenerator targetPackage="com.how2java.pojo" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成 Dao 类寄存地位 -->

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.how2java.mapper" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 生成对应表及类名 -->
        <table tableName="category_" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false">
            <property name="my.isgen.usekeys" value="true"/>
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>
        <!--         <table tableName="product_" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> -->
    </context>
</generatorConfiguration>

步骤 7 : TestMybatisGenerator

运行胜利之后,就会在对应地位生成 pojo,xml, 和 mapper

package com.how2java;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class TestMybatisGenerator {public static void main(String[] args) throws Exception {List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        InputStream is= TestMybatisGenerator.class.getClassLoader().getResource("generatorConfig.xml").openStream();
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        is.close();
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成代码胜利,刷新我的项目,查看文件, 而后执行 TestMybatis.java");
    }
}

步骤 8 : TestMybatis

运行 TestMybatis,执行主动生成的 mapper,借助 CategoryExample 进行含糊查问名称里呈现了 9 的分类

package com.how2java;

import java.io.InputStream;
import java.util.List;
//import com.how2java.mapper.CategoryMapper;
//import com.how2java.pojo.Category;
//import com.how2java.pojo.CategoryExample;
//import com.how2java.mapper.CategoryMapper;
//import com.how2java.pojo.CategoryExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.how2java.mapper.CategoryMapper;
import com.how2java.pojo.Category;
import com.how2java.pojo.CategoryExample;
public class TestMybatis {public static void main(String args[]) throws Exception {System.out.println("先运行 TestMybatisGenerator 创立 mapper,pojo,xml 等文件,而后勾销 import 里被正文的,以及接下来的正文,并执行代码");
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session=sqlSessionFactory.openSession();
        CategoryExample example = new CategoryExample();
        example.createCriteria().andNameLike("%9%");
        CategoryMapper mapper = session.getMapper(CategoryMapper.class);
        List<Category> cs= mapper.selectByExample(example);
        for (Category c : cs) {System.out.println(c.getName());
        }
    }
}

步骤 9 : 局限性

多对一,一对多须要本人手写,这个工具目前 (20170828 版本 1.3.5) 不提供

更多内容,点击理解:https://how2j.cn/k/mybatis/mybatis-generator/1376.html

正文完
 0