1.添加依赖
pom.xml
<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>com.oo.auth</groupId>
<artifactId>happyCode</artifactId>
<version>0.0.1-SNAPSHOT</version><!-- SNAPSHOT:快照版本,仍处开发中的版本(不稳定),RELEASE:正式版本,对外发布的稳定版本 -->
<packaging>war</packaging><!-- jar:普通项目,pom:父级项目,war:服务项目 -->
<!-- 继承spring-boot-starter-parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<!-- 添加Maven依赖 -->
<dependencies>
<!-- SpringBoot MyBatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<!--
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
-->
<!-- jdbcTemplate工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<!--
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
-->
</dependency>
<!-- SpringBoot内嵌tomcat(spring-boot-starter-web已经默认添加了这个jar包的依赖) -->
<!--
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--SpringBoot工具,改善开发时体验的模块:classpath里对文件任何操作都会触发应用程序重新启动 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- Freemarker模板引擎 SpringBoot整合依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- SpringBoot Maven插件,可以打包成可执行的jar或war -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- maven install 没有指定<mainClass>或者继承了spring-boot-starter-parent并且<start-class>属性未配置时,会自动寻找签名是public static void main(String[] args)的方法... 所以插件懵逼了,两个妹子和谁在一起呢... -->
<configuration>
<mainClass>com.oo.HappyCodeApplication</mainClass>
</configuration>
<!-- 所述spring-boot-starter-parentPOM包括<executions>配置以结合repackage目标。如果您不使用父POM,则需要自己声明此配置 -->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.添加配置
application.yml
server:
port: 80
servlet:
context-path: /happyCode
spring:
http:
encoding:
force: true
charset: UTF-8
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
freemarker:
allow-request-override: false
#缓存
cache: false
check-template-location: true
charset: UTF-8
content-type: text/html; charset=utf-8
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: false
#后缀
suffix: .ftl
#模板加载位置
template-loader-path: classpath:/templates
mybatis:
#Mapper.xml文件位置
mapper-locations: classpath:mapper/*.xml
3.编写Mapper
TestMapper.java
package com.oo.test.dao;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.oo.test.entity.Test;
public interface TestMapper {
@Select("select id,content,version from test")
public List<Test> findAll();
@Update("UPDATE test set id=#{id},content=#{content},version=#{version}")
public Integer updateById(Test test);
@Insert("INSERT INTO test(id,content,version) values(#{id},#{content},#{version})")
public Integer inser(Test test);
@Delete("DELETE FROM test WHERE id =#{id}")
public Integer deleteById(Long id);
@SelectProvider(type=TestSqlProvider.class,method="selectSearch")//动态SQL语句
public Test selectSearch(Test test);
}
TestSqlProvider.java
package com.oo.test.dao;
import org.apache.ibatis.jdbc.SQL;
import com.oo.test.entity.Test;
public class TestSqlProvider {
public String selectSearch(final Test test) {
return new SQL(){{
SELECT("id,content,version");
FROM("test");
if(test.getId()!=null) {
WHERE("id = #{id}");
}
if(test.getContent() != null){
WHERE("content like '%${name}%'");
}
if(test.getVersion() != null){
WHERE("version = #{version}");
}
}}.toString();
}
}
4.还要使用MapperScan扫描 *Application.java
package com.oo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan("com")//注释扫描,默认扫描使用@ComponentScan所的类所在包下
@MapperScan(basePackages = {"com.oo.dao","com.oo.*.dao","com.oo.**.dao"})//扫描的是mapper.xml中namespace指向值的包位置
@EnableAutoConfiguration
public class HappyCodeApplication {
public static void main(String[] args) {
//启动服务项目,默认端口8080
SpringApplication.run(HappyCodeApplication.class, args);
}
/*
@Bean
public TomcatServletWebServerFactory servletContainer(){
TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
tomcatServletWebServerFactory.setPort(80);//修改默认启动端口,可以在application.yml中配置
return tomcatServletWebServerFactory;
}
*/
}