一、概述

  MyBatis是目前流行的优秀持久层框架,其逆向工程更是大大缩减了开发时间。所谓逆向工程,指的是mybatis根据数据库设计好的表,自动生成对应model、mapper及mapper.xml,本文是以非插件的方式进行逆向工程。

二、手工代码

  本文采用IDEA结合Maven实现逆向工程,工程结构如下:

  

(1)入口类

package com.practice.common.generate;

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; import java.util.ArrayList;
import java.util.List; /**
* @ProjectName: profile-demo
* @Package: com.pds.common.generate
* @ClassName: Generator
* @Author: dong
* @Description: ${description}
* @Date: 2019/9/10 15:45
* @Version: 1.0
*/
public class Generator {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(Generator.class.getResourceAsStream("/generator/generatorConfig.xml"));
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}

(2)逆向工程配置文件

  

<?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="MySQL2" targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<property name="javaFileEncoding" value="UTF-8" /> <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers"
value="com.practice.common.base.BaseMapper" />
<property name="caseSensitive" value="true" />
<!--<property name="beginningDelimiter" value="`"/> -->
<!--<property name="endingDelimiter" value="`"/> -->
</plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.229.132:3306/test_db"
userId="root"
password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="com.practice.common.model"
targetProject="student-demo-common-base/src/main/java" />
<sqlMapGenerator targetPackage="commonmappers"
targetProject="student-demo-common-base/src/main/resources" />
<javaClientGenerator targetPackage="com.practice.common.mapper"
targetProject="student-demo-common-base/src/main/java" type="XMLMAPPER" /> <table tableName="student">
<generatedKey column="name" sqlStatement="JDBC" />
</table>
</context>
</generatorConfiguration>

(3)运行逆向工程入口类即可

三、总结

  本文是以非插件的方式进行逆向工程,在pom文件也有对应插件逆向工程配置,代码已经上传至:https://github.com/Simple-Coder/student-demo/tree/master/student-demo-common-base

MyBatis逆向工程的使用(非插件方式)的更多相关文章

  1. Unity3D调用android方法(非插件方式)

    关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...

  2. Maven插件方式使用Mybatis Generator

    Mybatis Generator Mybatis Generator简称MBG,可以根据数据库自动生成实体类.单表查询接口及其映射xml文件(也可以选择以注解方式生成). 下面介绍一下以maven插 ...

  3. mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比,于是写了个插件。

    使用mybatis逆向工程的时候,delete方法的使用姿势不对,导致表被清空了,在生产上一刷新后发现表里没数据了,一股凉意从脚板心直冲天灵盖. 于是开发了一个拦截器,并写下这篇文章记录并分享. 这锅 ...

  4. mybatis通过插件方式实现读写分离

    原理:通过自定义mybatis插件,拦截Executor的update和query方法,检查sql中有select就用读的库,其它的用写的库(如果有调用存储过程就另当别论了) @Intercepts( ...

  5. MyBatis代码生成器(maven插件方式和控制台命令运行方式)

    代码生成器的作用: 1.生成domain 2.生成mapper接口 3.生成mapper映射文件 准备工作:导入MyBatis所需要的包 第一步:在src/main/resources(必须)目录下创 ...

  6. Spring Boot整合tk.mybatis及pageHelper分页插件及mybatis逆向工程

    Spring Boot整合druid数据源 1)引入依赖 <dependency> <groupId>com.alibaba</groupId> <artif ...

  7. 基于Mybatis插件方式实现数据脱敏处理

    一.项目介绍 1.项目背景 有时候我们数据库中存储一些敏感的信息比如手机号.银行卡号,我们希望我们查询出来的的时候对一些敏感信息做一些脱敏处理. 当面项目是基于自定义Mybatis插件方式实现数据脱敏 ...

  8. 浅析MyBatis(四):全自动写代码的MyBatis逆向工程

    在前面几篇文章中,笔者介绍了 MyBatis 的运行流程,在此基础上简单介绍了手写 MyBatis 简易框架与自定义 MyBatis 插件的步骤,相信大家对于 MyBatis 框架的使用流程已经游刃有 ...

  9. IDEA Maven项目的Mybatis逆向工程

    IDEA Maven项目的Mybatis逆向工程 1.配置.pom 如果是在多模块开发下,该文件逆向工程要生成的那个模块下的pom文件. <build> <plugins> & ...

随机推荐

  1. 简述python(threading)多线程

    一.概述 import threading 调用 t1 = threading.Thread(target=function , args=(,)) Thread类的实例方法 # join():在子线 ...

  2. Python 实现深度学习

    前言 最近由于疫情被困在家,于是准备每天看点专业知识,准备写成博客,不定期发布. 博客大概会写5~7篇,主要是"解剖"一些深度学习的底层技术.关于深度学习,计算机专业的人多少都会了 ...

  3. 前后端分离构架 与 json ajax简介

    前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服 ...

  4. MySql -- default 默认约束

    常用数据库约束: 一.default 默认约束: 二.not null:非空约束,指定某列不为NULL: 三.unique:唯一约束,指定某列和几列组合的数据不能重复: 四.primary key:主 ...

  5. select出来的表增加递增列

    Select identity(int,1,1) as no,* into #tmp from table

  6. 在Linux服务器上安装Python3.7

    我的Linux版本是CentOS 6,自带2.7版本的Python.源码安装和系统中默认存在的Python不冲突. 1.在Python官网下载源码包,进入官网https://www.python.or ...

  7. django admin 后台总结(转载)

    https://www.cnblogs.com/wumingxiaoyao/p/6928297.html

  8. eli和字符串 (牛客假期训练)

    链接:https://ac.nowcoder.com/acm/contest/3002/G来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. Eqaulize Prices

    There are n products in the shop. The price of the ii-th product is aiai. The owner of the shop want ...

  10. 股票数据Scrapy爬虫

    功能描述: 技术路线:scrapy 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 数据网站的确定 获取股票列表: 东方财富网:http://quote.eastmoney.co ...