一、创建springboot项目
到如下也ian时勾选四个依赖

二、导入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.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.hp.bootmybatis</groupId>
<artifactId>boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot-mybatis</name>
<description>boot-mybatis</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Spring Boot 和MyBatis的整合包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
三、application.yml配置文件
server:
port: 8081
spring:
datasource:
druid:
# 数据库访问配置, 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf-8
username: root
password: 数据库密码
# 连接池配置
initial-size: 5
min-idle: 5
max-active: 20
# 连接等待超时时间
max-wait: 30000
# 配置检测可以关闭的空闲连接间隔时间
time-between-eviction-runs-millis: 60000
# 配置连接在池中的最小生存时间
min-evictable-idle-time-millis: 300000
validation-query: select '1' from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-open-prepared-statements: 20
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters, 去掉后监控界面sql无法统计, 'wall'用于防火墙
filters: stat,wall
# Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
aop-patterns: cn.hp.bootmybatis.service.*
# WebStatFilter配置
web-stat-filter:
enabled: true
# 添加过滤规则
url-pattern: /*
# 忽略过滤的格式
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
# StatViewServlet配置
stat-view-servlet:
enabled: true
# 访问路径为/druid时,跳转到StatViewServlet
url-pattern: /druid/*
# 是否能够重置数据
reset-enable: false
# 需要账号密码才能访问控制台
login-username: druid
login-password: druid123
# 配置StatFilter
filter:
stat:
log-slow-sql: true
mybatis:
# 指定sql映射文件的位置
mapper-locations: classpath:dao/*.xml
# 配置实体类别名
type-aliases-package: cn.hp.thy.pojo
四、三层架构的搭建
pojo:写实体类
mapper接口:数据访问层,写接口
mapper.xml:编写sql语句
service接口(业务逻辑层):内容和mapper接口中的一样
service实现类:调用mapper层的接口实现功能
controller:显示层,调用service层的方法向前台页面显示数据
1.实体类
package cn.hp.bootmybatis.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @title: Student
* @Author 尤词
* @Date: 2022/10/10 10:06
* @Description: 实体类
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private String email;
private Integer age;
}
2.mapper接口
package cn.hp.bootmybatis.dao;
import cn.hp.bootmybatis.entity.Student;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @title: UserMapper
* @Author 尤词
* @Date: 2022/10/10 9:44
* @Description: 数据访问层
* @Version 1.0
*/
public interface UserMapper {
//统计
int count();
//全查
List<Student> findAll(Student student);
//删除
int delete(Integer id);
//添加
int add(Student student);
//修改
int update(Student student);
}
3.mapper.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="cn.hp.bootmybatis.dao.UserMapper">
<sql id="Base_Column_List">
id
,name,email,age
</sql>
<insert id="add">
insert into student(name, email, age)
values (#{name}, #{email}, #{age})
</insert>
<update id="update">
<trim prefix="update student" suffixOverrides="," suffix="where id = #{id}">
<set>
<if test="name != null and name != ''">
name=#{name},
</if>
<if test="email != null and email != ''">
email=#{email},
</if>
<if test="age > 0">
age=#{age}
</if>
</set>
</trim>
</update>
<delete id="delete">
delete
from student
where id = #{id}
</delete>
<select id="count" resultType="java.lang.Integer">
select count(*)
from student
</select>
<select id="findAll" resultType="student">
select
<include refid="Base_Column_List"/>
from student
<where>
<if test="id != null and id != ''">
id = #{id}
</if>
</where>
</select>
</mapper>4.service接口
package cn.hp.bootmybatis.service;
import cn.hp.bootmybatis.entity.Student;
import java.util.List;
/**
* @title: UserService
* @Author 尤词
* @Date: 2022/10/10 9:53
* @Description: 业务逻辑层
* @Version 1.0
*/
public interface UserService {
//统计
int count();
//全查
List<Student> findAll(Student student);
//删除
int delete(Integer id);
//添加
int add(Student student);
//修改
int update(Student student);
}
5.service实现类
package cn.hp.bootmybatis.service.impl;
import cn.hp.bootmybatis.dao.UserMapper;
import cn.hp.bootmybatis.entity.Student;
import cn.hp.bootmybatis.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @title: UserServiceImpl
* @Author 尤词
* @Date: 2022/10/10 9:53
* @Description: 业务逻辑层实现类
* @Version 1.0
*/
@Service
public class UserServiceImpl implements UserService {
//注入dao
@Resource
private UserMapper userMapper;
@Override
public int count() {
return userMapper.count();
}
@Override
public List<Student> findAll(Student student) {
return userMapper.findAll(student);
}
@Override
public int delete(Integer id) {
return userMapper.delete(id);
}
@Override
public int add(Student student) {
return userMapper.add(student);
}
@Override
public int update(Student student) {
return userMapper.update(student);
}
}
6.controller
package cn.hp.bootmybatis.controller;
import cn.hp.bootmybatis.entity.Student;
import cn.hp.bootmybatis.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
* @title: UserController
* @Author 尤词
* @Date: 2022/10/10 9:57
* @Description: 表示层
* @Version 1.0
*/
@Controller
public class UserController {
@Resource
private UserService userService;
@GetMapping("/count")
@ResponseBody
public Object count() {
return userService.count();
}
@GetMapping("/findAll")
@ResponseBody
public Object findAll(Student student){
return userService.findAll(student);
}
@GetMapping("/add")
@ResponseBody
public Object add(Student student){
return userService.add(student);
}
@GetMapping("/update")
@ResponseBody
public Object update(Student student){
return userService.update(student);
}
@GetMapping("/del")
@ResponseBody
public Object del(Integer id){
return userService.delete(id);
}
}
注意: 主方法运行加mapper扫描注解:
@MapperScan(basePackages = "cn.hp.bootmybatis.dao")
主方法
五、测试/运行项目

版权声明:本文为qq_53828362原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
