创建工程
创建SpringBoot工程
工程命名
可以暂不选择依赖
确认创建工程
指定maven仓库
pom
<?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 https://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.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hkj</groupId>
<artifactId>spring-boot-mybatis-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-mybatis-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- spring boot 相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- web 相关依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- spring boot和mybatis整合依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
yml
server:
port: 8080
spring:
datasource:
name: test
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: lovehkj
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.hkj.springbootmybatisdemo.entity.Person
项目包结构
包结构
Entity
//@Repository
public class Person {
private String id;
private String name;
private int age;
private String sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
Controller
@RestController
public class ControllerTest {
@Autowired
private ServiceTest serviceTest;
@GetMapping(value = "/test/{id}")
public String test(@PathVariable(value = "id") String id){
String result = serviceTest.test(id);
return result;
}
}
Service Interface
public interface ServiceTest {
String test(String id);
}
Service Impl
@Service
public class ServiceTestImpl implements ServiceTest {
@Autowired
private TestDao daoTest;
public String test(String id){
Person person = daoTest.test(id);
String result = person.toString();
return result;
}
}
Dao Interface
@Mapper
public interface TestDao {
Person test(String id);
}
Dao xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hkj.springbootmybatisdemo.dao.TestDao">
<select id="test" parameterType="string" resultType="com.hkj.springbootmybatisdemo.entity.Person">
select * from person where id= #{id}
</select>
</mapper>
启动类
@SpringBootApplication
public class SpringBootMybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisDemoApplication.class, args);
}
}
浏览器中访问http://localhost:8080/test/0a3c0ed0b4354d27bbebb1ab1b53bb68进行测试
结果如下:
测试数据
与数据库中person表结果一致
person表
实际开发中,Dao Interface的数量会很多,如果在每个Dao Interface上都添加@Mapper注解会很麻烦,如果忘记添加,还会导致出错,可以通过在启动类上添加@MapperScan注解来配置Dao Interface扫描:
@SpringBootApplication
@MapperScan("com.hkj.springbootmybatisdemo.dao")// Dao Interface存放路径
public class SpringBootMybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisDemoApplication.class, args);
}
}
添加此配置后,即可无需每个Dao Interface上都配置@Mapper注解,减少重复工作。
如要开启sql日志,配置yml
server:
port: 8080
spring:
datasource:
name: test
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: ljy19950703
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.hkj.springbootmybatisdemo.entity.Person
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
重新访问测试接口,console打印日志如下:
console打印sql日志