实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述使用mybatis反向自动生成实体类和mapper映射文件和接口文件相关的知识,希望能为你提供帮助。
问题描述:
最近在做web的东西,想要从数据库中生成实体类,然后操作数据库,然后做一些增删改查的工作,
发现可以直接使用mybatis直接生成javabean,还有可以直接生成mapper的映射文件。具体操作如下:
新建一个maven工程:
(1)在pom文件中加入需要依赖的jar包(如下3个依赖)
<
dependency>
<
groupId>
org.mybatis.generator<
/groupId>
<
artifactId>
mybatis-generator-core<
/artifactId>
<
version>
1.3.5<
/version>
<
/dependency>
<
dependency>
<
groupId>
mysql<
/groupId>
<
artifactId>
mysql-connector-java<
/artifactId>
<
version>
5.1.38<
/version>
<
/dependency>
<
!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core -->
<
dependency>
<
groupId>
org.apache.ibatis<
/groupId>
<
artifactId>
ibatis-core<
/artifactId>
<
version>
3.0<
/version>
<
/dependency>
(2)在根目录下创建一个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>
<
context id="testTables" targetRuntime="MyBatis3">
<
commentGenerator>
<
!-- 是否去除自动生成的注释 true:是 : false:否 -->
<
property name="suppressAllComments" value="https://www.songbingjia.com/android/true" />
<
/commentGenerator>
<
!--数据库连接的信息:驱动类、连接地址、用户名、密码mysql数据库连接-->
<
jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://zhb-pc:3306/rrv" userId="report"
password="report">
<
/jdbcConnection>
<
!--oracle数据库连接-->
<
!-- <
jdbcConnection driverClass="oracle.jdbc.OracleDriver"connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
userId="yycg"
password="yycg">
<
/jdbcConnection>
-->
<
!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<
javaTypeResolver>
<
property name="forceBigDecimals" value="https://www.songbingjia.com/android/false" />
<
/javaTypeResolver>
【使用mybatis反向自动生成实体类和mapper映射文件和接口文件】<
!-- targetProject:生成PO类的位置 -->
<
javaModelGenerator targetPackage="com.report.pojo"
targetProject="src/main/java">
<
!-- enableSubPackages:是否让schema作为包的后缀 -->
<
property name="enableSubPackages" value="https://www.songbingjia.com/android/false" />
<
!-- 从数据库返回的值被清理前后的空格 -->
<
property name="trimStrings" value="https://www.songbingjia.com/android/true" />
<
/javaModelGenerator>
<
!-- targetProject:mapper映射文件生成的位置 -->
<
sqlMapGenerator targetPackage="com.itheima.mapper"
targetProject="src/main/resources">
<
!-- enableSubPackages:是否让schema作为包的后缀 -->
<
property name="enableSubPackages" value="https://www.songbingjia.com/android/false" />
<
/sqlMapGenerator>
<
!-- targetPackage:mapper接口生成的位置 -->
<
javaClientGenerator type="XMLMAPPER"
targetPackage="com.report.dao"
targetProject="src/main/java">
<
!-- enableSubPackages:是否让schema作为包的后缀 -->
<
property name="enableSubPackages" value="https://www.songbingjia.com/android/false" />
<
/javaClientGenerator>
<
!-- 指定数据库表 -->
<
!-- <
table tableName="items">
<
/table>
-->
<
table tableName="rule_conf">
<
/table>
<
table tableName="rule_run_result">
<
/table>
<
!-- <
table tableName="user">
<
/table>
-->
<
!-- <
table schema="" tableName="sys_user">
<
/table>
<
table schema="" tableName="sys_role">
<
/table>
<
table schema="" tableName="sys_permission">
<
/table>
<
table schema="" tableName="sys_user_role">
<
/table>
<
table schema="" tableName="sys_role_permission">
<
/table>
-->
<
!-- 有些表的字段需要指定java类型
<
table schema="" tableName="">
<
columnOverride column="" javaType="" />
<
/table>
-->
<
/context>
<
/generatorConfiguration>
(3)编写一个主类然后运行即可生成。
import java.io.File;
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 Generate {
public void generator() throws Exception{
List<
String>
warnings = new ArrayList<
String>
();
boolean overwrite = true;
File configFile = new File("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);
}
public static void main(String[] args) throws Exception {
try {
Generate generatorSqlmap = new Generate();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结:在xml文件中定义的包不需要我们手动的创建,需要在执行的时候会直接生成。
推荐阅读
- android-samples-mvp
- 背单词app评估测试
- 避免死锁
- FCFS中的车队效应
- 磁盘的连续分配
- 内存压缩
- 动态分区的位图
- 二进制信号量或互斥量
- 贝拉迪异常(Belady’s Anomaly)