美文网首页Spring Boot服务器Java&JAVA EE
SpringBoot整合Mybatis与Mybatis-Gene

SpringBoot整合Mybatis与Mybatis-Gene

作者: 谦卑王生 | 来源:发表于2018-10-07 18:48 被阅读195次

    随着近年来微服务的流行,越来越多的企业需要快速的开发,而Spring Boot除了以注解为主的开发,还有其他的绑定,例如,对服务器进行了绑定和默认对Spring的最大化配置,所以开发者能够尽快的进行开发代码,发布和测试自己的项目。这符合了现代微服务快速开发,测试和部署的需要,于是越来越多的企业选择Spring Boot作为开发的选型,进而使得Spring Boot更加兴旺起来。摘自【深入浅出 Spring Boot 2.x】

    Spring Boot的优点

    依据官方的文档,Spring Boot的优点如下:

    • 创建独立的spring应用程序;
    • 嵌入的Tomcat,Jetty或者Undertow,无需部署WAR文件;
    • 允许通过Maven来根据需要获取starter;
    • 尽可能地自动配置Spring;

    约定优于配置,这是Spring Boot的主导思想。对于Sping Boot而言,大部分情况下存在默认配置,你甚至可以在没有任何定义的情况下使用Spring框架,如果需要自定义也只需要在配置文件配置一些属性便可以,十分便捷。而对于部署这些项目必须的功能,Spring Boot提供了Starter的依赖,如Spring-boot-starter-web捆绑了Sprig MVC所依赖的包,spring-boot-starter-tomcat绑定了内嵌的Tomcat,这样使得开发者能够尽快的搭建开发环境,快速的进行开发和部署,这就是Spring Boot的特色。

    Mybatis

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
    Mybatis是一个半自动化的orm框架,所谓半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis,mybatis非常灵活,可以随心所欲的编写自己的sql语句来实现复杂的数据库操作,还会有一种畅酣淋漓的编写sql语句的潇洒感,但是以前的mybaits需要一大堆的配置文件,以及各种mapper和dao和实体的关联,导致使用mybatis还是不够简洁,后来mybatis也发现了这个弊端,开发了mybatis generator工具来自动化生成实体类、mapper配置文件、dao层代码来减轻开发工作量,在后期也是实现了抛弃mapper配置文件基于注解的开发模式,直到现在,mybatis看spring boot这么火热,也开发了一套基于spring boot的模式:mybatis-spring-boot-starter。
    spring boot简约轻巧的风格正在逐渐被越来越多的厂商及开发者所认可,包括阿里的开源RPC框架dubbo也准备开发一套对spring boot应用的支持(dubbo-spring-boot-starter启动配置模块)
    引用博客springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用

    Spring Boot 与Mybatis及Mybatis-Generator集成

    所依赖的jar包

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
      </parent>
    <dependencies>
    <!--Spring MVC所依赖的jar-->
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 测试所依赖的jar-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- mysql驱动所依赖的jar-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
     </dependency>
    <!--集成Mybatis所依赖的jar-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    </dependencies>
    <build>
        <finalName>test</finalName>
        <plugins>
        <plugin>
        <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-maven-plugin -->
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.5</version>
        <executions>
            <execution>
                <id>Generate MyBatis Artifacts</id>
                <phase>deploy</phase>
                <goals>
                   <goal>generate</goal>
                </goals> 
            </execution>
        </executions>  
        <!--工具配置类  -->
        <configuration>
            <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
            <verbose>true</verbose>
            <overwrite>true</overwrite>
        </configuration>
        <dependencies>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>
        </dependencies>
        </plugin>
        <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        </plugins>
      </build>
    

    在application.properties中配置数据源及Mybatis配置:

    spring.datasource.driver-calss-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=root
    
    spring.datasource.tomcat.max-idle=10
    spring.datasource.tomcat.max-wait=10000
    spring.datasource.tomcat.max-active=50
    spring.datasource.tomcat.max-initial=10
    
    logging.level.root=DEBUG
    logging.level.org.springframework=DEBUG
    logging.level.org.org.mybatis=DEBUG
    
    mybatis.mapperLocations=classpath*:StationMapper.xml
    
    

    接下来在数据库中创建Station表,并插入一些数据


    Screen Shot 2018-10-07 at 6.39.54 PM.png

    在上文中说到,mybatis也发现了我们需要重复的去创建pojo类、mapper文件以及dao类并且需要配置它们之间的依赖关系可能会很麻烦,所以mybtis提供了一个mybatis generator工具来帮我们自动创建pojo类、mapper文件以及dao类并且会帮我们配置好它们的依赖关系,而我们只需要关系我们的业务逻辑直接使用就行了

    在src/main/resources下创建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>
      <!-- 引入配置文件 -->
        <!-- <properties resource="mybatis-generator/mybatisGeneratorinit.properties"/> -->
          <!--数据库驱动-->
         <!-- <classPathEntry    location="/Users/wangyingbo/eclipse-workspace/Interg/mysql-connector-java-8.0.12.jar"/> -->
          <context id="DB2Tables"    targetRuntime="MyBatis3">
              <commentGenerator>
                 <property name="suppressDate" value="true"/>
                 <property name="suppressAllComments" value="true"/>
             </commentGenerator>
             <!--数据库链接地址账号密码-->
             <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="root">
             </jdbcConnection>
             <javaTypeResolver>
                 <property name="forceBigDecimals" value="false"/>
             </javaTypeResolver>
             <!--生成Model类存放位置-->
             <javaModelGenerator targetPackage="com.cugb.model" targetProject="src/main/java">
                 <property name="enableSubPackages" value="true"/>
                 <property name="trimStrings" value="true"/>
             </javaModelGenerator>
             <!--生成映射文件存放位置-->
             <sqlMapGenerator targetPackage="com.cugb.mapping" targetProject="src/main/java">
                 <property name="enableSubPackages" value="true"/>
             </sqlMapGenerator>
             <!--生成Dao类存放位置-->
             <javaClientGenerator type="XMLMAPPER" targetPackage="com.cugb.dao" targetProject="src/main/java">
                 <property name="enableSubPackages" value="true"/>
             </javaClientGenerator>
             <!--生成对应表及类名-->
             <table tableName="stationInfo" domainObjectName="Station" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
         </context>
     </generatorConfiguration>
    

    到此,整个配置就完成了,既然该工具的作用是将数据库中的表生成对应的实体、dao类和mapper文件,那么首先需要建立数据库表,当数据库表建立好后在pom.xml文件所在的项目,点击run as maven,输入一下命令

    mybatis-generator:generate
    

    然后就可以看到在指定目录下已经生成了对应的文件。

    关于mybatis generator的更多详细的配置可以参考这篇文章:Mybatis Generator最完整配置详解

    相关文章

      网友评论

        本文标题:SpringBoot整合Mybatis与Mybatis-Gene

        本文链接:https://www.haomeiwen.com/subject/yawlaftx.html