Mybatis三剑客

在使用mybatis时,以下3个组件也很常用

  • MyBatis-generator   mybatis逆向工程,根据数据表生成实体类、mapper接口、xml映射文件
  • Mybatis-plugin   mapper接口中的方法、xml映射文件中相应的元素、sql语句,快速定位
  • MyBatis-PageHelper   mybatis的分页组件

MyBatis Generator(MBG)的使用

MBG可以根据数据表生成对应的model、xml映射文件、mapper接口,只是简单的生成,还需要根据需求修改。

执行流程:连接数据库->获取表结构->生成文件

1、新建maven项目

pom.xml

  <!-- 数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency> <!-- mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency> <!-- mybatis-generator的依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>

2、resources下新建mybatis-generator的配置文件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>
<!-- 数据库驱动的jar包 -->
<!--<classPathEntry location="F:/maven/repository/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar" />--> <!-- context配置环境 -->
<context id="myMBG" targetRuntime="MyBatis3"> <!-- xml文件不追加。配置同名文件覆盖时,默认只覆盖mapper接口、实体类,xml映射文件会以追加方式写入 -->
<!-- 使用此插件后,不管生成多少次,同名xml映射文件都是直接覆盖 -->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"></plugin> <!--配置生成的注释-->
<commentGenerator>
<!-- 去掉方法注释,默认会生成大量的方法说明注释,很不友好 -->
<property name="suppressAllComments" value="true"/>
<!-- 去掉注释中的时间戳 -->
<property name="suppressDate" value="true"/>
</commentGenerator> <!-- 数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/db_user?serverTimezone=UTC"
userId="chy"
password="abcd">
</jdbcConnection> <!-- 配置表字段、java之间的类型转换-->
<javaTypeResolver >
<!-- 是否将Numeric、Decimal全部转换为BigDecimal类型,设置为false,会根据表字段的长度转换响应的类型,Short <5,Integer 5~9,Long 10~18,BigDecimal >18 -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- 配置pojo类的生成规则,主要配置实体类存放的包、该包的位置 -->
<!-- mapper、实体类这些包、文件夹不需要我们手动创建,会自动创建 -->
<javaModelGenerator targetPackage="com.chy.mall.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<!-- 是否去掉String两端的空格,这个可要可不要,缺省时默认为false -->
<!--<property name="trimStrings" value="true" />-->
</javaModelGenerator> <!-- 配置xml映射文件的生成规则 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator> <!-- 配置mapper接口的生成规则 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.chy.mall.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator> <!-- 配置要使用的数据表,需要配置mapper接口、映射文件名以及实体类名,不然tb_user生成的是TbUserMapper、TbUser -->
<!-- 默认会生成大量的example相关的东西,不需要,禁用所有的example选项 -->
<!-- 字段会自动完成映射,比如user_id会自动映射为userId -->
<!-- 写好一个,Ctrl+D复制到下一行 -->
<table tableName="tb_user" mapperName="UserMapper" domainObjectName="User" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" />
<table tableName="tb_permission" mapperName="PermissionMapper" domainObjectName="Permission" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" /> </context>
</generatorConfiguration>

主要是修改数据库的连接信息、文件的生成位置、文件名称。这些元素是有顺序的,不能随意更改配置顺序。

文件名任意,因为后面要指定配置文件的位置

3、新建主类test.Test

package test;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class Test { public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
List<String> warnings = new ArrayList<String>();
//生成文件时如果已存在同名文件,会覆盖
boolean overwrite = true;
//指定mybatis-generator配置文件的位置
InputStream configFile = Test.class.getResourceAsStream("/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);
} }

4、运行主类,将生成的文件复制到要使用的项目中,根据需要修改。

也可以直接在原项目中使用

只能生成简单的代码,复杂的还需要自己写,比如关联查询。


另一种方式   使用maven插件(推荐)

1、新建maven项目

    <build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<!-- 覆盖同名文件 -->
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>

不需要任何依赖

2、resources下新建配置文件generatorConfig.xml

 <!--  数据库驱动的jar包 -->
<classPathEntry location="F:/maven/repository/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar" />

和第一种的基本相同,区别是数据库驱动的jar包添加到classpath中都不行,必须要在配置文件中指定路径

执行插件时默认加载资源根目录下的generatorConfig.xml

3、执行maven插件mybatis-generator,生成文件


这种常用的可以搞成项目模板,以后直接用。

官网:http://mybatis.org/generator/index.html

github:https://github.com/mybatis/generator

带GUI的代码生成器:https://github.com/zouzg/mybatis-generator-gui


Mybatis-plugin 的使用

这是IDEA的一个插件,可以实现mapper接口中的方法、xml映射文件中相应的元素|sql语句之间的快速定位

在插件中搜索 mybatis plugin 安装即可,目前该插件的名称是Free MyBatis plugin,插件名称可能会变化,一般是搜索结果中下载次数最多的那个。


MyBatis 逆向工程——根据数据表自动生成model、xml映射文件、mapper接口的更多相关文章

  1. Go语言根据数据表自动生成model以及controller代码

    手写model的用法请参考: https://www.jianshu.com/p/f5784b8c00d0 这里仅说明自动生成model文件的过程 bee generate appcode -tabl ...

  2. 基于querybuilder的可根据现有数据表自动生成Restful API的dotnet中间件

    AutoApi 基于SqlKata Query Builder的可根据数据表自动生成Restful API的dotnet中间件 项目地址 Github Gitee 支持的数据库 MySql AutoA ...

  3. 第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml

    源码链接:https://pan.baidu.com/s/1iP4UguBufHbcIEv4Ux4wDw 提取码:j6z9 目录结构如下:只需增加一个generatorConfig.xml文件和在po ...

  4. 数据表自动生成java代码

    MyBatis生成代码需要用到mybatis-generator-core-1.3.2.jar.数据库连接驱动包和一个xml文件,xml文件一般命令为:generator.xml. Xml内容格式如下 ...

  5. 根据数据表自动生成javaBean

    package fanshe; import java.io.File; import java.io.FileWriter; import java.io.IOException; import j ...

  6. Mybatis中的Mapper.xml映射文件sql查询接收多个参数

    ​ 我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQL,在dao层定义的接口中定义的参数传到xml文件中之后,在查询之前mybatis会对其进行动态解析,通常使用#{}接收 ...

  7. mybatis 逆向工程(通过数据库表针对单表自动生成mybatis执行所需要的代码)

    mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml.pojo…),可以让程序员 ...

  8. mybits根据表自动生成 java类和mapper 文件

    mybits根据表自动生成 java类和mapper 文件 我这个脑子啊,每次创建新的工程都会忘记是怎么集成mybits怎么生成mapper文件的,so today , I can't write t ...

  9. Idea根据表自动生成实体

    Idea根据表自动生成实体: 首先说下这种方式有个缺点,就是如果表里面有日期.时间类型,那么需要手动的设置映射类型 第一步:在Idea中配置好数据库: 在Idea窗口右边,点击Database按钮 配 ...

随机推荐

  1. [USACO19OPEN]Valleys P

    题意 洛谷 做法 用并查集维护区域,剩下的就只用判是否有洞就好了 然后手玩出一个结论:凸角为\(+1\),凹角为\(-1\),和为\(sum\),洞数\(h\),满足\(sum=4-4h\) 位置\( ...

  2. ZedGraph5.1.5源码分析去掉鼠标悬浮内容闪烁问题(附源码下载)

    场景 在使用ZedGraph绘制曲线图时,将鼠标悬浮时内容闪烁,且频率很高. 找到其源码,发现不论鼠标移动的范围大小,甚至乎不论鼠标是否移动,都要刷新一次Tooltip. 注: 博客主页:https: ...

  3. ArcGISServer发布流程

    发布数据服务 在进行WebGIS开发中,地图显示的内容可以分成两类:一类是底图,或者是矢量的世界地图.中国地图.某个地区的底图:另一类就是业务图,对于用于遥感数据发布的WebGIS应用就是遥感影像的边 ...

  4. EOFError: Compressed file ended before the end-of-stream marker was reached解决办法(在Windows下查看已下载的MNIST数据文件)

    出现这个问题的原因是因为文件下载到一半就中断了,解决办法是删除datasets中下载到一半的数据包. 下面以我遇到的问题为例: 我下载数据下载到最后一个包就没有反应了,于是我强制终止了运行,可能是因为 ...

  5. 自己的系统重装之后,怎么去重新的装官方的office办公软件,详细教程

    1  访问官网地址--微软,并通过自己的微软账号进行登录,转到下面的界面 2   点击上图的菜单栏的offce菜单项,跳转到下图 3  点击  菜单栏的产品  之后选择  查看office的全部的历史 ...

  6. 使用ResXmanager实现多语言[转]

    1 多國語系 - 使用RESXMANAGER管理資源檔 1.1 前言 在實作多國語系網站時,針對靜態文字多會使用資源檔(Resource)來對應出各語系所需顯示的內容.由於資源檔可能會依照特定結構放式 ...

  7. laravle中常见的数据库加密

    // 1.md5加密 $str=md5('123456'); // 2.base64_decode加密 $str2=base64_encode('123456'); // 2.1 base64_解密 ...

  8. poj2387- Til the Cows Come Home(最短路板子题)

    题目描述 Description Bessie is out in the field and wants to get back to the barn to get as much sleep a ...

  9. 2018ICPC南京站Problem A. Adrien and Austin

    题意: n个石头再1-n的位置上,两个人轮流取时候,必须取连续的一段,最多取k个,不能取为输,问谁会赢 解析: 当k大于等于2时,先手总能把石头分成相等的两部分,此时后手无论怎么走,先手在对称的位置选 ...

  10. #助力CSP2019# OI中容易出现的**错误汇总

    多测不清空,爆0两行泪 3年OI一场空,不开long long见祖宗 线段树空间需要开4倍 读入有负数的时候,如果要写快读,要识别负号 持续更新