环境
springboot2.4.3 + druid1.2.6+ mysql8 + Mybatis2.1.4
需求
浏览器中访问:http://localhost:8080/employee/list 列表员工数据
操作步骤
步骤1:创建项目 springboot-mybatis
步骤2:使用navicat创建数据库与员工表
建表语句:
CREATE TABLE `employee` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
步骤3:导入依赖
核心依赖有3个:springboot parent + web环境 + mysql依赖 +mybatis依赖
在pom.xml文件中导入
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<!--mybatis集成到SpringBoot中的依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
</dependencies>
步骤4:在/项目/resources/application.properties配置数据库四要素以及mybatis配置
#数据库四要素
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=admin
#mybatis配置(可配置可不配置)
#mybatis.configuration.lazy-loading-enabled=true
#mybatis.configuration.lazy-load-trigger-methods=clone
#mybatis.mapper-locations=classpath:com/langfeiyes/mybatis/*/mapper/*Mapper.xml
#mybatis.type-aliases-package=com.langfeiyes.mybatis.domain
#打印SQL日志
logging.level.com.langfeiyes.mybatis.mapper=trace
步骤5:编写相关相关代码
代码结构:
实体类:Employee
package com.langfeiyes.mybatis.domain;
//员工对象,与员工表对应
public class Employee {
private Long id;
private String username;
private String name;
private String password;
private String email;
private Integer age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
持久层类:EmployeeMapper
//持久层接口,可以根据需要自定义其他crud方法
public interface EmployeeMapper {
List<Employee> selectAll();
}
service层类:IEmployeeService EmployeeServiceImpl
package com.langfeiyes.mybatis.service.impl;
import com.langfeiyes.mybatis.domain.Employee;
import com.langfeiyes.mybatis.mapper.EmployeeMapper;
import com.langfeiyes.mybatis.service.IEmployeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
//服务层接口实现类,调用持久层接口实现数据处理
@Service
public class EmployeServiceImpl implements IEmployeService {
@Autowired
private EmployeeMapper employeeMapper;
@Override
public List<Employee> list() {
return employeeMapper.selectAll();
}
}
表现层:EmployeeController
package com.langfeiyes.mybatis.web.controller;
import com.langfeiyes.mybatis.service.IEmployeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//表现层:对外提供接口,浏览器访问即可
@Controller
@RequestMapping("employee")
public class EmployeeController {
@Autowired
private IEmployeService employeService;
@RequestMapping("/list")
@ResponseBody
public Object list(){
return employeService.list();
}
}
启动类:App
package com.langfeiyes.mybatis;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
//mybatis中mapper接口扫描器, 指定参数为:mapper接口所在路径
//功能:将中路径下所有接口动态代理, 创建mapper接口实现类交给spring容器管理
@MapperScan(basePackages = "com.langfeiyes.mybatis.mapper")
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
mybatis映射文件:EmployeeMapper.xml
注意该文件是放置在resources文件夹中,文件路径跟EmployeeMapper.java类放置包装路径一样,不能弄错。
<?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.langfeiyes.mybatis.mapper.EmployeeMapper" >
<resultMap id="BaseResultMap" type="com.langfeiyes.mybatis.domain.Employee" >
<id column="id" property="id" />
<result column="username" property="username" />
<result column="name" property="name" />
<result column="password" property="password" />
<result column="email" property="email" />
<result column="age" property="age" />
</resultMap>
<select id="selectAll" resultMap="BaseResultMap" >
select id, username, name, password, email, age
from employee
</select>
</mapper>
步骤6:测试
右键执行App类
浏览器输入:http://localhost:8080/employee/list
显示最终效果:
到这,Springboot集成mybatis成功。
案例源码:传送门