文章目录
一、逆向工程
1、概述
正向工程:先创建java实体类,由框架负责根据实体类生成数据库表,Hibernate是支持正向工程的
逆向工程:先创建数据库,由框架负责根据数据库的表,反向生成如下资源:
- Java实体类
- Mapper接口
- Mapper映射文件
2、逆向工程使用步骤
2.1、创建项目
2.2、添加依赖和插件pom.xml,并刷新(逆向工程配置)
<!--jar包配置(依赖)-->
<dependencies>
<dependency>
<!--junit测试-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</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.29</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
2.3、配置文件 jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=111111
2.4、核心配置文件 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>
<!--
MYBatis核心配置文件中的标签必须要按照指定的顺序去配置
properties?,settings?,typeAliases?,typeHandlers?,
objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,
environments?,databaseIdProvider?,mappers?
-->
<!--引入 properties 文件-->
<properties resource="jdbc.properties"/>
<!--全局设置-->
<settings>
<!--日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--将下划线映射为驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--设置类型别名-->
<typeAliases>
<!--通过包来设置类型别名,指定包下所有的类型,将全部拥有默认的别名-->
<package name="com.sgz.mybatis.pojo"/>
</typeAliases>
<!--连接数据库-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url"
value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--引入mybatis的映射文件-->
<mappers>
<package name="com.sgz.mybatis.mapper"/>
</mappers>
</configuration>
2.5、创建逆向工程的核心配置文件 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="MyBatis3Simple">
<!-- 数据库的连接信息 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC" userId="root"
password="111111">
</jdbcConnection>
<!-- javaBean的生成策略-->
<javaModelGenerator targetPackage="com.sgz.mybatis.pojo" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- SQL映射文件的生成策略 -->
<sqlMapGenerator targetPackage="com.sgz.mybatis.mapper" targetProject=".\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- Mapper接口的生成策略 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.sgz.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>
2.6、执行插件的generate目标(逆向工程配置)
简洁版
尊享版
2.7、重写toString方法
2.8、测试类
简洁版
public class TestGenertor {
@Test
public void test() throws IOException {
// 1、获取核心配置文件的输入流
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 2、获取 SqlSessionFactoryBuilder 对象
SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
// 3、获取 SqlSessionFactory 对象
SqlSessionFactory build = factoryBuilder.build(inputStream);
// 4、获取 sql 的会话对 SqlSession,是 MyBatis 提供操作数据库的对象,开启自动提交事务
SqlSession sqlSession = build.openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> emps = mapper.selectAll();
emps.forEach(System.out::println);
}
}
尊享版
public class TestGenertor {
@Test
public void test() throws IOException {
// 1、获取核心配置文件的输入流
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 2、获取 SqlSessionFactoryBuilder 对象
SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
// 3、获取 SqlSessionFactory 对象
SqlSessionFactory build = factoryBuilder.build(inputStream);
// 4、获取 sql 的会话对 SqlSession,是 MyBatis 提供操作数据库的对象,开启自动提交事务
SqlSession sqlSession = build.openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
EmpExample empExample = new EmpExample();
empExample.createCriteria().andEmpNameEqualTo("123");
List<Emp> emps = mapper.selectByExample(empExample);
emps.forEach(System.out::println);
}
}