【Mybatis】(九)逆向工程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【Mybatis】(九)逆向工程

Mybatis Generator(MBG)通过丰富的配置可以生成不同类型的代码,代码包含了数据库表对应的实体类,Mapper接口类,Mapper XML文件和Example对象等。这些代码文件中几乎包含了全部的单表操作方法,使用MBG可以极大程度上方便我们使用Mybatis。

接下来介绍具体的配置过程:


1、配置 mbg.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>
        <!--jdbcConnection:指定如何连接到目标数据库
            targetRuntime="MyBatis3Simple":生成简单版的CRUD
            targetRuntime="MyBatis3":生成复杂的CRUD
        -->
        <context id="DB2Tables" targetRuntime="MyBatis3">
                <jdbcConnection  driverClass="com.mysql.jdbc.Driver"
                                connectionURL="jdbc:mysql://localhost:3306/mybatis"
                                userId="root"
                                password="13579">
                </jdbcConnection>
                <javaTypeResolver >
                    <property name="forceBigDecimals" value="false" />
                </javaTypeResolver>
                <!--javaModelGenerator:指定Javabean的生成策略
                    targetPackage ="test.model" 目标包名
                    argetProject = "\ MBGTestProject \ src" 目标工程
                 -->
                <javaModelGenerator targetPackage ="com.lhk.mybatis.bean" targetProject = ".\src">
                    <property name ="enableSubPackages" value ="true"/>
                    <property name ="trimStrings" value = "true"/>
                </javaModelGenerator>
                <!--sqlMapGenerator:sql映射生成策略
                    targetPackage ="test.xml" 目标包名
                    targetProject ="\MBGTestProject\ src" 目标工程
                -->
                <sqlMapGenerator targetPackage ="conf" targetProject =".\src">
                    <property name ="enableSubPackages" value ="true"/>
                </sqlMapGenerator>
                <!--javaClientGenerator:指定mapper接口所在的位置
                    targetPackage = "test.dao" 目标包名
                    targetProject = "\ MBGTestProject \ src" 目标工程
                -->
                <javaClientGenerator type = "XMLMAPPER" targetPackage = "com.lhk.mybatis.dao" targetProject = ".\src">
                    <property name ="enableSubPackages" value ="true"/>
                </javaClientGenerator>
                <!--table:指定要逆向生成的表,根据表要创建Javabean
                    tableName ="tb1_employee" 数据库中的表名
                    domainObjectName ="Employee" 对应生成的Javabean类名称
                -->
                <table tableName ="tb1_employee" domainObjectName ="Employee">
                    <property name="useActualColumnNames" value="true"/>
                    <generatedKey column="ID" sqlStatement="DB2" identity="true" />
                    <columnOverride column="DATE_FIELD" property="startDate" />
                    <ignoreColumn column="FRED" />
                    <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
                </table>
                <table tableName="tb1_dept" domainObjectName="Department">
                    <property name="useActualColumnNames" value="true"/>
                    <generatedKey column="ID" sqlStatement="DB2" identity="true" />
                    <columnOverride column="DATE_FIELD" property="startDate" />
                    <ignoreColumn column="FRED" />
                    <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
                </table>
        </context>
    </generatorConfiguration>


2、添加 mybatis-config.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 数据库连接的配置信息 驱动,URL,用户名,密码-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="13579" />
            </dataSource>
        </environment>
    </environments>
    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
    <mappers>
        <mapper resource="conf/EmployeeMapper.xml" />
        <mapper resource="conf/DepartmentMapper.xml" />
    </mappers>
</configuration>


3、添加MyBatisTest测试类


用于执行MBG配置生成代码

@Test
    public void testMbg() throws Exception{
        //MBG执行过程中的警告信息
        List<String> warnings = new ArrayList<>();
        //当生成代码重复时,覆盖原代码
        boolean overwrite = true;
        //读取MBG配置文件
        File configFile = new File("E:\\java\\IDEATest\\Mybatis_MBG\\src\\conf\\mbg.xml");
        // ...根据需要填写配置对象......
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        // 创建MBG
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback,warnings);
        // 执行生成代码
        myBatisGenerator.generate(null);
    }


在通过MBG生成代码之前,项目的结构为:


在使用MBG生成代码后,项目的结构为:


可以看到通过MBG自动生成了实体类,Mapper接口类,Mapper XML文件和Example对象。


4、测试自动生成的查询方法


public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "conf/mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
 @Test
    public void testSimple() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            //查询员工名字中有e字母的,和员工性别是0的
            //封装员工查询条件example
            EmployeeExample example = new EmployeeExample();
            //创建一个Criteria,这个Criteria就是拼装查询条件
            EmployeeExample.Criteria criteria = example.createCriteria();
            criteria.andLast_nameLike("%e%");
            criteria.andGenderEqualTo("0");
            //添加or查询,新建一个Criteria,然后example.or(criteria2)
            EmployeeExample.Criteria criteria2 = example.createCriteria();
            criteria2.andEmailLike("%e%");
            example.or(criteria2);
            List<Employee> selectList =  mapper.selectByExample(example);
            for (Employee employee : selectList) {
                System.out.println(employee.getId());
            }
        } finally {
            openSession.close();
        }
    }


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
XML Java 数据库连接
mybatis-plus逆向工程详解
mybatis-plus逆向工程详解
392 0
|
XML Java 数据库连接
Mybatis使用generator逆向工程生成器生成entity、mapper、.xml模版类
今天将表建好了,但是一个一个的建实体类、Mapper接口、Mapper.xml文件就十分的麻烦,所以我就想到了MyBatis逆向,今天就操作一把!这里我们采用maven来进行操作。
285 0
|
22天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
2月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
119 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
7月前
|
Java 数据库连接 数据库
Mybatis逆向工程笔记小结
Mybatis逆向工程笔记小结
|
6月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
7月前
|
XML Java 数据库连接
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
80 6
|
XML Java 数据库连接
优雅地使用Mybatis逆向工程生成类
优雅地使用Mybatis逆向工程生成类
96 1
|
7月前
|
数据库
Springboot+mybatis-plus逆向工程生成代码器
Springboot+mybatis-plus逆向工程生成代码器
|
SQL 运维 前端开发
Mybatis-Plus之逆向工程之旅
Mybatis-Plus之逆向工程之旅
170 0