Mybatis连接MySQL数据库通过逆向工程简化开发流程

这篇具有很好参考价值的文章主要介绍了Mybatis连接MySQL数据库通过逆向工程简化开发流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在开发中,一般我们的开发流程是:
  1. 数据库:设计数据表
  2. 实体类:建立与数据表对应的pojo实体类
  3. 持久层:设计持久层,Mapper接口和Mypper.xml sql映射文件
  4. 服务层:添加Service接口和ServiceImpl接口实现类
  5. 逻辑控制层:设计各页面/功能的Cotroller

但是,我们想的是,很多情况下,实体类都是一些和SQL表中重复的字段,能不能有一种方法可以自动生成对应的实体类?如果表少,手敲没有啥,如果表太多的话,难免会很麻烦,所以MyBatis官方提供了一个逆向工程,可以针对单表自动生成MyBatis执行所需要的代码(包括mapper.xml,mapper.java,pojo)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。

在引入逆向工程之后,我们的开发流程会变成:

  1. 加入Mybatis逆向工程的依赖

  2. 设计数据表

  3. 配置逆向工程配置信息

  4. 运行逆向工程

  5. 得到【pojo类、dao接口、sql映射文件】

下面,我们来开始使用,对于逆向工程,帮我们自动生成的Java代码,大大加快了我们的开发效率。但是,生成的文件太过冗余,不必要的代码过多。尤其是sql映射文件,里面的配置内容太多,对于dao层,提供的方法比较有限,需要自行扩展。后期,一般使用MyBatisPlus完成开发功能。

一、使用步骤

1、建立新项目

开始,我们建立一个空项目,模拟一下初始的开发流程
Mybatis连接MySQL数据库通过逆向工程简化开发流程
对于配置文件可以在官方网站中找到:http://mybatis.org/generator/configreference/xmlconfig.html,很多时候要学会看官网 。

2、引入pom依赖

<!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- mybatis依赖 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <!-- mybatis逆向工程依赖 -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.7</version>
    </dependency>

3、创建逆向工程的配置文件 generatorConfig.xml

Mybatis连接MySQL数据库通过逆向工程简化开发流程
注意的是:配置文件中的各个标签顺序是有要求的,和mybatis-config.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="DB2Tables" targetRuntime="MyBatis3">
     <!-- 去除生成的注解 -->
     <commentGenerator>
        <property name="suppressAllComments" value="true"/>
     </commentGenerator>
     <!-- 数据库连接配置 -->
     <!-- 注意xml中不支持&,用&amp;代替 -->
     <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
     connectionURL="jdbc:mysql://rm-m5e130nm7h37n6v982o.mysql.rds.aliyuncs.com:3306/demo?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8"
     userId="xxxxx" password="xxxxxx"></jdbcConnection>
     
     <!-- 处理NUMERIC和DECIMAL类型的策略 -->
     <javaTypeResolver>
         <property name="forceBigDecimals" value="false" />
     </javaTypeResolver>
     
     <!-- 配置pojo生成的位置 -->
     <javaModelGenerator targetPackage="com.ycz.pojo"  targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />
     </javaModelGenerator>
     
     <!-- 配置sql映射文件的生成位置 -->
     <sqlMapGenerator targetPackage="com.ycz.mapper" targetProject="src/main/resources">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />        
     </sqlMapGenerator>
     
     <!-- 配置dao接口的生成位置 -->
     <javaClientGenerator type="XMLMAPPER" targetPackage="com.ycz.dao" 
     targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />     
     </javaClientGenerator>
     
     <!-- 指定逆向依据的数据表 -->
     <table tableName="person" domainObjectName="Person"></table>
   </context>
 </generatorConfiguration>

4、运行逆行工程,生成代码文件

public class GeneratorTest {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/config/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);
        System.out.println("生成成功!");
    }
}

二、案例展示

我们按照上述的开发流程步骤来进行:

1、建立数据表

根据自己的业务,首先第一步进行的就是先创建对应符合业务的数据表。这里我使用三张表:
Mybatis连接MySQL数据库通过逆向工程简化开发流程
三张表的字段信息如下:
Mybatis连接MySQL数据库通过逆向工程简化开发流程
这里不需要直接用我的三张表,可以自己建立自己的表来进行测试,这边只是为了后文博文的完整性。

2、改写对应的配置文件内容

1、数据库连接配置,指定自己的数据库

需要对generatorConfig.xml文件中的内容修改为符合自己项目的配置。

  <!-- 注意xml中不支持&,用&amp;代替 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8"
                        userId="root" password="admin123">
            <!--在逆向生成时,除了会生成 User 类,还会生成一个继承 User 类的UserWithBLOBs 类。
                加入此注解避免生成类的UserWithBLOBs-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

jdbcConnection设置连接信息,配置用户名和密码,驱动和数据库的url等等信息。

2、配置pojo生成的位置

  <!-- 配置pojo生成的位置 -->
        <javaModelGenerator targetPackage="com.fckey.pojo"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

主要配置的是targetPackage项目,指定pojo生成的位置

3、配置sql映射文件的生成位置

  <!-- 配置sql映射文件的生成位置 -->
        <sqlMapGenerator targetPackage="com.fckey.mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </sqlMapGenerator>

4、配置mapper接口的生成位置

 <!-- 配置dao接口的生成位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.fckey.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaClientGenerator>

5、对需要生成对应数据表进行指定

 <!-- 指定逆向依据的数据表 -->
        <table tableName="t_dept" domainObjectName="Dept"></table>
        <table tableName="t_emp" domainObjectName="Emp"></table>
        <table tableName="t_user" domainObjectName="User"></table>

3、运行生成代码工具类

在编写好了对应的配置,还需要一个能够运行配置的方法。如下所示:

public class GeneratorTest {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/config/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);
        System.out.println("生成成功!");
    }
}

4、运行结果

直接运行GeneratorTest,查看最终的结果
Mybatis连接MySQL数据库通过逆向工程简化开发流程
生成的效果还是不错的,对于xml配置文件,里面写的内容也是非常的专业。
Mybatis连接MySQL数据库通过逆向工程简化开发流程

三、对生成的逆向工程代码进行测试

对于生成的逆向工程代码,我们注意到pojo包名下还生成了xxxExample方法,example用于添加查询条件,相当where后面的部分。
对于Example中方法的说明。
Mybatis连接MySQL数据库通过逆向工程简化开发流程
在进行测试之前,需要注意的是,我们还需要导入全局配置文件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>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <typeAliases>
        <!--将当前包下的所有类都配置别名-->
        <package name="com.fckey.mybatis.entity"/>
    </typeAliases>
    <!--设置连接数据库的环境-->
    <environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url"
                      value="jdbc:mysql://localhost:3306/mybatis_demo"/>
            <!--注意:如果在建sql表单的时候选了字符集(如utf8),
            这里的value要改成:value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"-->
            <property name="username" value="root"/>
            <property name="password" value="admin123"/>
        </dataSource>
    </environment>
</environments>
    <!--引入映射文件-->
    <mappers>
        <package name="com.fckey.mapper"/>
    </mappers>
</configuration>

书写测试类的时候,发现多了很多条件的查询。
Mybatis连接MySQL数据库通过逆向工程简化开发流程
测试类编写:

   private static SqlSession getSqlSession() throws IOException {
    /*
       如果是想自动的进行提交,而不需要手动的提交事务,可以在sqlSession()中传入true,即可开启自动提交功能
     */
        // 加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        // 获取sqlsessionfactorybuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 获取sqlsessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        // 获取sqlsession
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        return sqlSession;
    }

    @org.junit.Test
    public void test() throws IOException {
        SqlSession sqlSession = getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> emps = mapper.selectByExample(null);
        System.out.println(emps);
    }

最后得到所有的对象信息:

Mybatis连接MySQL数据库通过逆向工程简化开发流程文章来源地址https://www.toymoban.com/news/detail-454576.html


到了这里,关于Mybatis连接MySQL数据库通过逆向工程简化开发流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作

    java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作

    目录 一、JDBC简介 二、添加依赖 三、JDBC操作数据库的步骤 四、JDBC操作数据库——增删改查 (一)新增数据 (二)删除数据 (三)修改数据 (四)查询数据 (五)多表连接查询         Java数据库连接,(Java Database Connectivity,简称JDBC)是java语言中用来规范客户端程序如何来访问数

    2024年02月03日
    浏览(352)
  • 在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能

    在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能

    在IDEA中配置MySQL数据库连接以及在使用mybatis 时设置 sql语句的代码提示功能 一:在IDEA中配置MySQL数据库连接 第一步:在IDEA右侧区域有database选项,点击进去 第二步:database  - data soucre - mysql   第三步:配置连接信息,连接数据库   第四步:显示的数据库以及表的信息  第

    2024年02月14日
    浏览(20)
  • Android studio 通过mysql连接数据库完成注册登录,登陆后通过tcp协议与电脑的网络调试助手互发信息

    Android studio 通过mysql连接数据库完成注册登录,登陆后通过tcp协议与电脑的网络调试助手互发信息

    先不多直接看软件截图 这个是首页等陆界面 xml代码如下 MainActivity文件    注册界面的xlm文件  这个界面比较简单就不介绍了   MainActivity文件 这是一个注册失败的界面,如果数据库内有相同的账号密码则显示注册失败 话不多说直接上代码 MainActivity里面的代码 这里是user类用

    2024年02月02日
    浏览(23)
  • 物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

    物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

    下面来给大家做个简单的数据对接,也就是通过写JAVA代码实现MQTT协议 首页我们得搭建一个简单的IDEA项目,这个我就不做演示了 搭建完项目,我们需要准备一些jar包,jar包名如下: org.eclipse.paho.client.mqttv3-1.1.0.jar mysql-connector-java-5.1.34.jar jackson-databind-2.10.0.jar jackson-core-2.10.0

    2024年02月11日
    浏览(19)
  • Failed to load driver class com.mysql.cj.jdbc.Driver异常-IntellIJ Idea-后端项目连接数据库_添加MyBatis依赖配置问题

    Failed to load driver class com.mysql.cj.jdbc.Driver异常-IntellIJ Idea-后端项目连接数据库_添加MyBatis依赖配置问题

    前言 :后端项目连接数据库配置时,添加了如下application.properties的数据库连接配置 项目点击运行,就出现以下系列问题 这种情况通常是由于以下原因之—引起的: 1.没有在项目中引入mysql-connectorjar包,或者引入的包版本与JDBC驱动不匹配。解决方法:在项目pom.xml中添加相关依

    2024年02月05日
    浏览(48)
  • 根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)

    根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)

    目录 一、数据库设计 1.1、数据库选择 1.2、环境配置 1.3、建库建表接口实现 1.4、封装数据库操作 1.5、针对 DataBaseManager 进行单元测试 1.6、心得 MySQL 是我们最熟悉的数据库,但是这里我们选择使用 SQLite,原因如下: SQLite 比 MySQL 更轻量:一个完整的 SQLite 数据库,只有一个单

    2024年02月13日
    浏览(9)
  • 通过JDBC连接数据库并用Java把数据写入数据库

    通过JDBC连接数据库并用Java把数据写入数据库

    目录 1.新建项目 2.在src包下新建lib包,用来存放jar包(下载对应jar包复制到lib包里) 3.右键导入的jar包,找到并单击\\\"添加到库\\\"(add....) 4.在src包下新建bean包,新建class类 5.class类中写数据库表中对应的列名的set get方法、空参、有参(String方法)注意:类名为私有类(private),新建类时数

    2024年02月02日
    浏览(53)
  • Qt通过ODBC连接openGauss数据库

    Qt通过ODBC连接openGauss数据库

    本文就介绍了Qt通过ODBC连接opengauss数据库的基础内容。 在.pro文件中添加一行引入 添加如下测试代码 说明成功连接openGauss数据库 什么是ODBC ODBC(Open Database Connectivity,开放数据库互连)是由Microsoft公司基于X/OPEN CLI提出的用于访问数据库的应用程序编程接口。应用程序通过O

    2024年02月05日
    浏览(10)
  • 通过Java连接Sql Server数据库

    通过Java连接Sql Server数据库

    JDBC是Java DateBase Connectivity的简写,翻译过来就是java连接数据库,或者更通俗地说就是java语言操作数据库。JDBC的本质其实是官方定义的一套操作所有关系型数据库的规则,也就是接口。 微软官方jdbc下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=11774 下载之后解压到相

    2024年01月17日
    浏览(51)
  • 如何通过navicat连接SQL Server数据库

    如何通过navicat连接SQL Server数据库

           本文介绍如何通过Navicat 连接SQL Server数据库。如果想了解如何连接Oracle数据库,可以参考下边这篇文章。 如何通过Navicat连接Oracle数据库 https://sgknight.blog.csdn.net/article/details/132064235 1、新建SQL Server连接配置         打开Navicat软件,点击连接,选择SQL server,进入配置页

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包