zoukankan      html  css  js  c++  java
  • 回顾一下MyBatis逆向工程——自动生成代码

    前言

    最近做的项目(SSM+Shiro)的数据库表已经创建完成,一共有15张表,如果我们一个个去写pojo/bean的代码以及各种sql语句的话未免太过麻烦而且很容易出错,这个时候我们就需要MyBatis逆向工程去为我们生成这些基本的东西。

    先来简单的了解一下什么是逆向工程。

    一 什么是逆向工程

    官网解释浓缩版

    MyBatis逆向工程需要用到的就是MyBatis官方提供的MyBatis Generator(MBG)MBGMyBatisiBATIS的代码生成器,它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。MBG对简单CRUD(增删改查)的大部分数据库操作产生重大影响。但是您仍然需要为连接查询或存储过程手动编写SQL和对象代码。

    简要概括版:

    创建好数据库表之后,MBG可以根据数据库表自动为您生成pojo类example类(用于添加条件,相当where语句后面的部分 )mapper文件

    关于Mapper接口以及Example的实例的讲解可以查看这一篇文章:《Mapper接口以及Example的实例》 blog.csdn.net/biandous/ar…

    介绍完逆向工程是个什么东西后,接下来我们就要开始学习如何使用它了?

    二 使用MyBatis逆向工程

    考虑到大家的基础可能不同,所以我尽可能详细一点。

    2.1 新建Maven项目并添加相关依赖

    1.新建Maven项目(普通的Java项目):

    新建Maven项目

    2.添加相关依赖(pom.xml):

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    
    	<groupId>mybatis-generator</groupId>
    	<artifactId>sql-mapper</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>jar</packaging>
    
    	<name>sql-mapper</name>
    	<url>http://maven.apache.org</url>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	</properties>
    
    	<dependencies>
    		<!--log4j -->
    		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.17</version>
    		</dependency>
    		<!--MyBatis Generator -->
    		<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
    		<dependency>
    			<groupId>org.mybatis.generator</groupId>
    			<artifactId>mybatis-generator-core</artifactId>
    			<version>1.3.5</version>
    		</dependency>
    		<!--mysql-connector-java -->
    		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.38</version>
    		</dependency>
    		<!--mybatis -->
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.2.1</version>
    		</dependency>
    	</dependencies>
    </project>
    
    复制代码

    2.2 项目创建完成之后的目录结构

    项目创建完成之后的目录结构

    2.3 MyBatis逆向工程代码编写

    核心代码官网已经给出,地址为:www.mybatis.org/generator/r…

    核心代码示例(推荐读取xml配置文件的形式,还有一种基于Java的配置这里就不做演示):

       List<String> warnings = new ArrayList<String>();
       boolean overwrite = true;
       //读取xml配置文件,推荐使用这种方式
       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);
    复制代码

    本项目中使用代码MyBatisGeneratorApp.java:

    public class MyBatisGeneratorApp {
    
    	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 {
    			MyBatisGeneratorApp generatorSqlmap = new MyBatisGeneratorApp();
    			generatorSqlmap.generator();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    	}
    
    }
    复制代码

    2.4 MyBatis逆向工程配置文件以及log4j配置文件编写

    MyBatis GeneratorXML参考配置文件官网已经给出,地址为:www.mybatis.org/generator/c…

    MyBatis逆向工程配置文件如下(注释已经解释的很详细了,我这里就不多做解释了):

    <?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="true" />
    		</commentGenerator>
    		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 ,加上“useSSL=false”是因为我SSL连接数据库出现了错误 -->
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    			connectionURL="jdbc:mysql://localhost:3306/kpi_project?useSSL=false"
    			userId="root" password="xxx">
    		</jdbcConnection>
    		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
    			和 NUMERIC 类型解析为java.math.BigDecimal -->
    		<javaTypeResolver>
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    
    		<!-- targetProject:生成pojo类的位置 -->
    		<javaModelGenerator targetPackage="pojo"
    			targetProject=".srcmainjava">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    			<!-- 从数据库返回的值被清理前后的空格 -->
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
    
    		<!-- targetProject:mapper映射文件生成的位置 -->
    		<sqlMapGenerator targetPackage="mapper" targetProject=".srcmainjava">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    		</sqlMapGenerator>
    
    		<!-- targetPackage:mapper接口生成的位置 -->
    		<javaClientGenerator type="XMLMAPPER"
    			targetPackage="mapper" targetProject=".srcmainjava">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    		</javaClientGenerator>
    
    		<!-- 指定数据库表 -->
    		<table schema="" tableName="com_role"></table>
    		<table schema="" tableName="com_rule"></table>
    		<table schema="" tableName="kpi_assess"></table>
    		<table schema="" tableName="kpi_assign"></table>
    		<table schema="" tableName="kpi_complain"></table>
    		<table schema="" tableName="kpi_index"></table>
    		<table schema="" tableName="kpi_institute"></table>
    		<table schema="" tableName="kpi_peformance"></table>
    		<table schema="" tableName="kpi_result"></table>
    		<table schema="" tableName="kpi_score"></table>
    		<table schema="" tableName="sys_permission"></table>
    		<table schema="" tableName="sys_role"></table>
    		<table schema="" tableName="sys_role_perm"></table>
    		<table schema="" tableName="sys_user"></table>
    		<table schema="" tableName="sys_user_role"></table>	
    	</context>
    </generatorConfiguration>
    
    复制代码

    我的log4j的配置文件如下:

    log4j.rootLogger=DEBUG, Console
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    log4j.logger.java.sql.ResultSet=INFO
    log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG
    复制代码

    2.5 运行结果

    pojo及example类:

    pojo及example类

    mapper接口及mapper.xml:

    mapper接口及mapper.xml

    我们已经介绍了MyBatis逆向工程以及它的使用,下面我们简单的总结与补充一下所学的知识。

    三 总结

    • 什么是逆向工程?

      MBG可以根据数据库表自动为您生成pojo类example类(用于添加条件,相当where语句后面的部分 )mapper文件`。

    • 如何使用逆向工程?

      pom文件(添加相关jar包)->逆向工程核心代码编写->创建generatorConfig.xml配置文件(可以加上log4j日志打印配置文件)

  • 相关阅读:
    SqlServer:此数据库处于单用户模式,导致数据库无法删除的处理
    syscolumns表中所有字段的意思
    SQL数据库之变量
    Sqlserver常用的时间函数---GETDATE、GETUTCDATE、DATENAME
    判断游标是否存在的同时检测游标状态
    向已写好的多行插入sql语句中添加字段和值
    truncate和delete之间有什么区别
    javascript实现单例模式
    关于javascript中的 执行上下文和对象变量
    了解javascript中的this --实例篇
  • 原文地址:https://www.cnblogs.com/kkdn/p/9294917.html
Copyright © 2011-2022 走看看