MyBatis的逆向工程

目录

1. 创建逆向工程的步骤

①添加依赖和插件

②创建MyBatis的核心配置文件

③创建逆向工程的配置文件

④执行MBG插件的generate目标

⑤效果

2. QBC查询


正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。   

Hibernate是支持正向工程的。

逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:

Java实体类

Mapper接口

Mapper映射文件

1. 创建逆向工程的步骤

①添加依赖和插件

<!-- 依赖MyBatis核心包 -->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>

<!-- 控制Maven在构建过程中相关配置 -->
<build>

<!-- 构建过程中用到的插件 -->
<plugins>

<!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.0</version>

<!-- 插件的依赖 -->
<dependencies>

<!-- 逆向工程的核心依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>

<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

②创建MyBatis的核心配置文件

注: 此处只是作个样例说明, 与我实际代码无关

步骤1:确定文件位置与命名
        按照惯例,MyBatis的核心配置文件通常命名为mybatis-config.xml,并将其置于项目的资源目录下,如src/main/resources。这样放置可以确保在构建项目时,配置文件会被自动打包到应用程序的类路径(classpath)中,便于MyBatis框架在运行时找到并加载。


步骤2:编写XML结构
        
使用XML语法来编写配置文件,遵循MyBatis规定的标签顺序和结构。以下是基本的配置文件模板,包含了主要的配置元素及其顺序:


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

    <!-- ① properties配置 -->
    <properties resource="jdbc.properties"/>

    <!-- ② settings配置 -->
    <settings>
        <!-- 示例设置项 -->
        <setting name="logImpl" value="SLF4J"/>
    </settings>

    <!-- ③ 类型别名(typeAliases)配置 -->
    <typeAliases>
        <!-- 示例类型别名 -->
        <typeAlias type="com.example.MyEntity" alias="MyEntity"/>
    </typeAliases>

    <!-- ④ 类型处理器(typeHandlers)配置 -->
    <typeHandlers>
        <!-- 示例类型处理器 -->
        <typeHandler handler="com.example.MyCustomTypeHandler"/>
    </typeHandlers>

    <!-- ⑤ 对象工厂(objectFactory)、对象包装器工厂(objectWrapperFactory)、反射器工厂(reflectorFactory)配置,通常无需手动配置 -->

    <!-- ⑥ 插件(plugins)配置 -->
    <plugins>
        <!-- 示例插件 -->
        <plugin interceptor="com.example.MyInterceptor"/>
    </plugins>

    <!-- ⑦ 环境(environments)配置 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- ⑧ 数据库ID提供器(databaseIdProvider)配置,用于多数据库方言识别,可选 -->
    
    <!-- ⑨ 映射器(mappers)配置 -->
    <mappers>
        <!-- 示例映射器文件引用 -->
        <mapper resource="com/example/mapping/UserMapper.xml"/>
        <!-- 或者使用类路径扫描方式 -->
        <package name="com.example.mapping"/>
    </mappers>

</configuration>

各部分详解:
        ① properties:可指定外部属性文件(如jdbc.properties),其中包含数据库连接相关的属性。这些属性可以在配置文件的其他地方通过${property_name}引用。


        ② settings:设置MyBatis的全局行为,如开启驼峰命名自动映射、日志实现、是否允许方法内注解等。具体设置项及其含义参见官方文档。


        ③ typeAliases:为Java类型定义别名,简化XML映射文件中的类型引用。可以为单个类指定别名,也可以批量扫描包内的类自动赋予短名称作为别名。


        ④ typeHandlers:注册自定义类型处理器,用于处理JDBC无法直接处理的数据类型,如枚举、自定义对象等。


        ⑤ objectFactory、objectWrapperFactory、reflectorFactory:通常情况下,MyBatis提供的默认实现即可满足需求,无需特别配置。


        ⑥ plugins:注册插件,用于扩展MyBatis的功能,如拦截器、分页插件等。


        ⑦ environments:配置多个环境(如开发、测试、生产),每个环境包含事务管理器(transactionManager)和数据源(dataSource)。指定其中一个为默认环境。


        ⑧ databaseIdProvider:用于在多数据库环境下识别不同数据库的方言,以便在映射文件中使用条件语句编写针对特定数据库的SQL。


        ⑨ mappers:配置映射器(Mapper接口或XML映射文件),可以逐个指定文件路径,也可通过包扫描自动发现映射文件。


        请根据实际项目需求填充或调整上述配置。完成后,mybatis-config.xml就成为了连接数据库、定制MyBatis行为以及管理映射关系的核心配置文件。

③创建逆向工程的配置文件

文件名必须是: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>
    <!--
    targetRuntime: 执行生成的逆向工程的版本
    MyBatis3Simple: 生成基本的CRUD(清新简洁版)
    MyBatis3: 生成带条件的CRUD(奢华尊享版)
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 数据库的连接信息 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"                 
              connectionURL="jdbc:mysql://localhost:3306/mybatis?
              serverTimezone=UTC" userId="root" password="123456">
        </jdbcConnection>
        <!-- javaBean的生成策略-->
        <javaModelGenerator targetPackage="com.softeem.mybatis.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="com.softeem.mybatis.mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.softeem.mybatis.mapper"
                             targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName属性指定生成出来的实体类的类名 -->
        <table tableName="t_emp" domainObjectName="Emp"/>
        <table tableName="t_dept" domainObjectName="Dept"/>
    </context>
</generatorConfiguration>

④执行MBG插件的generate目标

⑤效果

2. QBC查询


@Test
public void testMBG(){
    try{
        InputStream is=Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory=new
        SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession=sqlSessionFactory.openSession(true);EmpMapper mapper=sqlSession.getMapper(EmpMapper.class);
        //查询所有数据
        /*List<Emp> list = mapper.selectByExample(null); list.forEach(emp -> System.out.println(emp));*/
        //根据条件查询
        /*EmpExample example = new EmpExample();
        example.createCriteria().andEmpNameEqualTo("张三").andAgeGreaterThanOrEqualTo(20);
        example.or().andDidIsNotNull();
        List<Emp> list = mapper.selectByExample(example); list.forEach(emp -> System.out.println(emp));*/
        mapper.updateByPrimaryKeySelective(new Emp(1,"admin",22,null,"456@qq.com",3));
        }catch(IOException e){
        e.printStackTrace();
        }
}

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值