zoukankan      html  css  js  c++  java
  • spring boot集成mybatis(3)


    Spring Boot 集成教程


    概述

    MyBatis Generator是一个代码生成器,可以为mybatis自动生成对应数据库表结构的实体类、mapper接口以及对应mapper.xml,大大减少这些繁琐重复的劳动,很方便。

    MyBatis Generator被设计为可以多次运行,生成代码时,java文件一般会被覆盖,xml文件新旧代码会合并。

    MyBatis Generator有三种用法:命令行、eclipse插件、maven插件。我们这里介绍最方便的maven插件用法,其他方法大同小异,如需了解可参考相关资料。

    准备工作

    准备数据

    数据会重用之前教程的数据,如无数据请参照教程创建。

    Eclipse项目

    不创建新项目,重用前2篇教程的项目,没有项目请按前2篇文章创建。

    添加依赖

    添加mybatis generator插件,在pom.xml的build > plugins下添加依赖

    			<plugin>
    	          <groupId>org.mybatis.generator</groupId>
    	          <artifactId>mybatis-generator-maven-plugin</artifactId>
    	          <version>1.3.7</version>
    	          <configuration>
    			    <verbose>true</verbose>
    			    <overwrite>true</overwrite>
    			  </configuration>
    			  <dependencies>
             		<dependency>
             			<groupId>mysql</groupId>
    					<artifactId>mysql-connector-java</artifactId>
    					<version>8.0.13</version>
    					<scope>runtime</scope>
            		</dependency>
         		  </dependencies>
    	        </plugin>
    

    pom.xml的完整内容

    <?xml version="1.0" encoding="UTF-8"?>
    <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>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.1.1.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.qikegu</groupId>
    	<artifactId>springboot-mybatis-demo</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>springboot-mybatis-demo</name>
    	<description>Demo project for Spring Boot</description>
    
    	<properties>
    		<java.version>1.8</java.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jdbc</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>1.3.2</version>
    		</dependency>
    
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<scope>runtime</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    		
    		<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
    		<dependency>
    		    <groupId>com.github.pagehelper</groupId>
    		    <artifactId>pagehelper-spring-boot-starter</artifactId>
    		    <version>1.2.10</version>
    		</dependency>
    		
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    			
    			<plugin>
    	          <groupId>org.mybatis.generator</groupId>
    	          <artifactId>mybatis-generator-maven-plugin</artifactId>
    	          <version>1.3.7</version>
    	          <configuration>
    			    <verbose>true</verbose>
    			    <overwrite>true</overwrite>
    			  </configuration>
    			  <dependencies>
             		<dependency>
             			<groupId>mysql</groupId>
    					<artifactId>mysql-connector-java</artifactId>
    					<version>8.0.13</version>
    					<scope>runtime</scope>
            		</dependency>
         		  </dependencies>
    	        </plugin>
    	        
    		</plugins>
    	</build>
    
    </project>
    
    

    添加配置

    新增generatorConfig.xml文件,此文件是MyBatis Generator的配置文件

    image

    文件内容如下:

    <?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>
        <!--导入配置文件-->
        <properties resource="application.properties"></properties>
     
     	<!-- 一个数据库一个context --> 
        <context id="default">
     
            <!-- 注释生成设置 --> 
            <commentGenerator>
            	<!-- 是否生成注释代时间戳-->  
                <property name="suppressDate" value="true" />
                <!-- 是否取消注释 -->
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
     
            <!--jdbc的数据库连接-->
            <jdbcConnection driverClass="${spring.datasource.driver-class-name}"
                            connectionURL="${spring.datasource.url}"
                            userId="${spring.datasource.username}"
                            password="${spring.datasource.password}">
            	<property name="nullCatalogMeansCurrent" value="true" />
            </jdbcConnection>
     
            <!-- 类型转换 -->  
            <javaTypeResolver>
    			<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
     
            <!-- targetPackage:生成的实体类所在的包 -->
            <!-- targetProject:生成的实体类所在的硬盘位置 -->
            <javaModelGenerator targetPackage="com.qikegu.demo.model" targetProject="src/main/java">
                <!-- 是否允许子包 -->
                <property name="enableSubPackages" value="false" />
                <!-- 是否对modal添加构造函数 -->
                <property name="constructorBased" value="true" />
                <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
                <property name="trimStrings" value="true" />
                <!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
                <property name="immutable" value="false" />
            </javaModelGenerator>
     
            <!-- targetPackage 和 targetProject:生成的  mapper xml 文件的包和位置 -->
            <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
                <!-- 是否在当前路径下新加一层schema,ex:false路径com.qikegu.demo.model, com.qikegu.demo.model.[schemaName] -->  
                <property name="enableSubPackages" value="false" />
                <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
                <property name="trimStrings" value="true"/> 
            </sqlMapGenerator>
     
            <!-- targetPackage 和  targetProject:生成的  java interface 文件的包和位置 -->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="com.qikegu.demo.repository" 
                                 targetProject="src/main/java">
                <!-- 是否在当前路径下新加一层schema,ex:false路径com.qikegu.demo.model, com.qikegu.demo.model.[schemaName] --> 
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>
            
            <!-- 配置表信息 --> 
            <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample, 是否生成 example类   -->  
            <!-- 不同的表,修改tableName和domainObjectName就可以 -->
            <table tableName="user" domainObjectName="User"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
            </table>
        </context>
    </generatorConfiguration>
    
    

    解释:

    请参考代码中的注释。

    自动生成

    删除旧文件

    删除下图中的文件,这些文件将由mybatis generator自动生成

    image

    运行mybatis generator

    Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> 4.Maven build...,弹出对话框如下图,注意红圈中的修改,点击run运行:

    image

    如果没有意外,build完成后,文件已经生成。

    修改代码

    如果运行一下程序,会报错,原因是userMapper.java中selectUser()接口不存在了。

    注释掉相关代码:

    UserService.java

    //    public List<User> listUser(int page, int pageSize);
    

    UserserviceImpl.java

    //	@Override
    //	public List<User> listUser(int page, int pageSize) {
    //        List<User> result = null;
    //        try {
    //            PageHelper.startPage(page, pageSize); //每页的大小为pageSize,查询第page页的结果
    //            PageHelper.orderBy("id ASC "); //进行分页结果的排序
    //        	result = userMapper.selectUser();
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //
    //		return result;
    //	}
    

    UserController.java

    //    @RequestMapping(value="", method = RequestMethod.GET, produces="application/json")
    //    public PageInfo<User> listUser(
    //    		@RequestParam(value="page", required=false, defaultValue="1") int page,
    //    		@RequestParam(value="page-size", required=false, defaultValue="5") int pageSize){
    //    	
    //
    //        List<User> result = userService.listUser(page, pageSize);
    //        // PageInfo包装结果,返回更多分页相关信息
    //        PageInfo<User> pi = new PageInfo<User>(result);
    //        
    //        return pi;
    //    }
    

    运行

    Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> spring boot app 运行程序。 打开Postman访问接口,运行结果如下:

    image

    总结

    本文介绍了mybatis generator的使用方法,要点总结如下:

    1. 添加mybatis generator的maven插件依赖
    2. 添加mybatis generator的配置文件:generatorConfig.xml
    3. 运行maven build: mybatis-generator:generate,生成代码

    实际开发中,mybatis generator很有用,用起来可以减少很多工作量。

    完整代码

  • 相关阅读:
    光猫改桥接,默认的超级管理员密码。
    Vmware+爱快软路由单机校园网多拨实现带宽叠加[测试用](非普遍性)
    魔百和破解教程
    用SSH工具XShell连接谷歌云 root用户或普通用户
    MySQL优化技巧【持续更新】
    Navicat常用快捷键
    IDEA实用插件Lombok
    Redis数据类型及命令
    Java代码优化总结(持续更新)
    Spring---AOP注解开发&jdbc模板&Spring事务管理
  • 原文地址:https://www.cnblogs.com/jinbuqi/p/11014398.html
Copyright © 2011-2022 走看看