使用springboot+mybatis搭建的框架进行开发
下面是一个小目录,目录下面有详细步骤
************************搭建框架****************************
搭建基本的架子需要做如下5件事情
1:创建一个maven项目,创建src/main/resources文件夹
2:配置pom.xml文件,引入需要的夹包
3:编写配置文件
4:编写启动类
5:写个接口测试下
***********引入mybatis测试链接数据库*******************
1:pom文件中引入夹包
2:书写接口和对应的mapper.xml文件
3:在aplication.propeities配置maaper,xml所在的路径
***************引入日志文件***************
1:引入夹包
2:引入配置文件
***********************将项目打成war包************************
1:设置pom文件
2:修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
3:保证项目引用的jdk和pom文件中设置的一致
4:有可能出现的问题
***********************集成swagger************************
1:pom文件里引入jar
2:书写集成类
3:写个测试controller类测试
***********************集成mybaties-plus************************
1:引入jar包
2:application.properties里配置扫描
3:书写 :实体类,service,mapper接口和mapper.xml
*******************************搭建框架***********************************
1:创建一个maven项目,创建src/main/resources文件夹
2:配置pom.xml文件,引入需要的夹包
*****************************pom文件配置开始********************************
<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>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<!-- 通过继承spring-boot-starter-parent 的方式来添加 Spring Boot 的相关支持,引入这个之后相关的引入就不需要添加version配置,
spring boot会自动选择最合适的版本进行添加 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
</parent>
<!-- 继承的spring-boot-starter-parent,默认Java 1.6 编译级别,这里可以配置新的Java编译器版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
<dependencies>
<!-- 支持 Web 应用开发,包含 Tomcat 和 spring-mvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 要构建可执行文件并将其部署到外部容器中,需要将嵌入容器依赖项标记为“提供”,
就是打包成功的war包想要部署在一个tomcate里,就得加入这个注解,否则启动tomcate时会报错,可以参考下面网址
https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope><!-- 这里代表禁用内置tomcate -->
</dependency>
<!-- 集成mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- 包含常用的测试所需的依赖,如 JUnit、Hamcrest、Mockito 和 spring-test 等 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mysql 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 引入阿里的json工具类 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.26</version>
</dependency>
<!-- 引入关于http请求的夹包 -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- excel表格操作需要的jar -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
</dependencies>
<!-- Spring Boot提供了一个可选的 Maven Plugin来创建可执行的jar或是war,加上这个配置可以打war包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<!-- 下面这个配置可以将自定义的lib下的jar,打包时打到war中 -->
<!-- <configuration>
<webResources>
<resource>
<directory>${project.basedir}/src/main/resources/lib</directory>
<targetPath>WEB-INF/lib</targetPath>
</resource>
</webResources>
</configuration> -->
</plugin>
</plugins>
</build>
</project>
*****************************pom文件配置结束********************************
3:编写配置文件
配置文件内容如下
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=8080
4:编写启动类
这样基本的架子就搭建起来了
试着启动项目:右键写的启动类-- Run As -- java Application -----项目就启动了,
启动成功如下图
5:写个接口测试下
*****************************引入mybatis测试链接数据库*****************************
1:pom文件中引入夹包
2:书写接口和对应的mapper.xml文件---在aplication.propeities配置maaper,xml所在的路径
注释:这里mybatise的用法,mapper接口和mapper.xml的写法和对应关系,和平时写法一样
集成需要做如下几件事:
1:在application.properties里面添加xml文件所在的路径
2:在每个mapper接口上添加注解 @Mapper,这样比较麻烦,在启动类哪里添加@MapperScan({"com.moudel.*.mapper","org.moudel.*.mapper"}) ,每个mapper就不用加@Mapper了
接口中写方法,xml中写sql语句,-----不会的可以百度下
******************************引入日志文件**********************************
1:引入夹包
2:引入配置文件
**************************配置文件内容开始***********************************
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %p (%file:%line)- %m%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="baselog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/bigdata.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/bigdata.log.%d.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 64 MB -->
<maxFileSize>10 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
%d %p (%file:%line)- %m%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
<!-- 定义根目录包的路径,这个路径下的所有打印的日志都会生成到文件里 -->
<logger name="com.test.module" level="INFO">
<appender-ref ref="baselog" />
</logger>
<!-- 打印指定包下的sql -->
<logger name="com.test.module" level="debug" >
<appender-ref ref="baselog" />
</logger>
</configuration>
**************************配置文件内容结束***********************************
*******************************将项目打成war包*****************************
1:设置pom文件,按着下面两幅图配置,第三幅是引用自定义jar的配置
2:修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
3:保证项目引用的jdk和pom文件中设置的一致
4:有可能出现的问题
1:如果不加入第二步那个类的话,打包可能会成功,但是启动的时候会有问题
2:pom中引入的java版本和项目中引入的不一致
3:项目中引入的是jre,而不是jdk,也有可能出问题,需要测试
*******************************集成swagger*****************************
1:在pom文件中引入jar
<!-- 集成swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2:和启动类在同一目录下建个文件夹 config,添加一个SwaggerConfig类,如下图:
类的内容:
package com.moudel.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("测试使用swagger")
.select()
//为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.moudel.test.controller"))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("Spring Boot 使用 Swagger2 构建RESTful API")
//创建人
.contact(new Contact("Bryan", "http://blog.bianxh.top/", ""))
//版本号
.version("1.0")
//描述
.description("API 描述")
.build();
}
}
3:controller类的写法
4:在浏览器中输入路径查看:http://localhost:8080/swagger-ui.html
*******************************集成mybaties-plus*****************************
集成需要注意的:
1:引入jar,集成mybatis-plus,就不用集成mybaties了,mybaties-plus会帮我们管理
2: 在controller 中可以直接使用service的一些增删改查方法,不用自己在手动写了
3:使用mybaties-plus自带的查询方法,需要注意的是表的命名有些规则,例如:test_form 命名成testform 可能就会出先问题
4:service上添加@Transactional注解,启动类上要添加上注解:@EnableTransactionManagement(proxyTargetClass = true) //注解事务
1:引入jar包
<!-- 集成mybatis-plus,就不用集成mybaties了,mybaties-plus会帮我们管理 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
2:application.properties里配置扫描
mybatis-plus.mapper-locations=classpath:mapper/*.xml
3:书写 :实体类,service,mapper接口和mapper.xml
实体类:
service的写法:
mapper接口和mapper.xml,和之前集成mybaties一样,mapper接口继承BaseMapper,剩下的都一致了