随着近年来微服务的流行,越来越多的企业需要快速的开发,而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表,并插入一些数据
在上文中说到,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最完整配置详解