关键词:
【README】
1.本文记录了 springboot2.5.5 配置 mybatis的步骤;
2.配置mybatis 分为注解和配置两种方式;
3.引入mybatis,包括了
- 创建springbt项目;
- druid数据源配置;
- 数据库表与javabean;
- mybatis配置与sql映射;
- 用户请求controller处理;
【1】springboot使用@注解引入mybatis
【1.1】创建springboot项目
步骤1, 新建springboot项目;
步骤2,选择依赖,包括springweb,mysql驱动,mybatis;(当然也可以手动录入 maven 依赖)
因为 mybatis-spring-boot-starter 引入了 jdbc starter,所需这里无需引入;
pom.xml 如下:
<?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.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cmc</groupId>
<artifactId>springbt-06-data-mybatis2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbt-06-data-mybatis2</name>
<description>Demo project for Spring Boot</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.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 引入druid数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!-- 需要引入log4j,因为druid使用了log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
【1.2】druid数据源配置
步骤1,引入 druid 依赖;
<!-- 引入druid数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!-- 需要引入log4j,因为druid使用了log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
步骤3, 数据源druid配置; application.yml
# 配置springboot数据源
spring:
datasource:
username: root
password: root
url: jdbc:mysql://192.168.163.204:3306/mybatis
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource # 启用druid数据源
# 数据源其他配置
initialSize: 6
minIdle: 6
maxActive: 26
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
druid 监控servlet配置;
// 导入druid数据源
@Configuration
public class DruidConfig
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid()
return new DruidDataSource();
// 配置druid监控
// 1 配置一个管理后台的servlet
@Bean
public ServletRegistrationBean statViewServlet()
ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
// 配置相关参数
Map<String, String> params = new HashMap<>();
params.put("loginUsername", "admin");
params.put("loginPassword", "admin");
params.put("allow", "localhost"); // 默认允许所有访问
params.put("deny", "192.168.163.204"); // 默认允许所有访问
bean.setInitParameters(params);
return bean;
// 2 配置一个监控的filter
@Bean
public FilterRegistrationBean webStatFilter()
FilterRegistrationBean bean = new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
// 配置相关参数
Map<String, String> params = new HashMap<>();
params.put("exclusions", "*.js,*.css,/druid/*");
bean.setInitParameters(params);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
【1.3】数据库表与javabean
步骤1,数据库表
CREATE TABLE `employee` (
`id` int NOT NULL AUTO_INCREMENT,
`last_name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`gender` int DEFAULT NULL,
`d_id` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3
;
CREATE TABLE `department` (
`id` int NOT NULL AUTO_INCREMENT,
`department_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3
;
步骤2,编写db表映射的javabean;
public class Department
private Integer id;
private String departmentName;
public Department()
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
MybatisAutoConfiguration conf = null;
public String getDepartmentName()
return departmentName;
public void setDepartmentName(String departmentName)
this.departmentName = departmentName;
@Override
public String toString()
return "Department" +
"id=" + id +
", departmentName='" + departmentName + '\\'' +
'';
public class Employee
private Integer id;
private String lastName;
private Integer gender;
private String email ;
private Integer dId;
public Employee()
.............
【1.4】mybatis全局配置与sql映射
步骤1,mybatic全局配置类(也可以通过 mybatis-config.xml 来实现);
@MapperScan 注解用于扫描 传入包下的所有Mapper类;
@org.springframework.context.annotation.Configuration
@MapperScan("com.cmc.springbt.mapper")
public class MyBatisConfig
@Bean
public ConfigurationCustomizer configurationCustomizer()
return new ConfigurationCustomizer()
@Override
public void customize(Configuration configuration)
configuration.setMapUnderscoreToCamelCase(true); // 开启驼峰
;
步骤2,编写 mybatis maper,sql操作接口;
MybatisConfig 中的注解 MapperScan 已经可以扫描到 DepartmentMapper, 这里无需 添加@Mapper 注解; 两者取1 即可;
// 指定这是一个操作数据库的mapper
//@Mapper
public interface DepartmentMapper
@Select("select * from department where id=#id ")
public Department getDeptByID(int id);
@Delete("delete from department where id=#id")
public int deleteDeptById(int id) ;
@Insert("insert into department(department_name) values(#departmentName)")
@Options(useGeneratedKeys = true,keyProperty = "id")
public int insertDept(Department dept);
@Update("update department set department_name=#departmentName where id=#id")
public int updateDept(Department dept);
【1.5】用户请求controller处理,使用 DepartmentMapper
步骤1,请求controller处理
@@RestController
public class DeptController
@Autowired
DepartmentMapper departmentMapper;
@GetMapping("dept/id")
public Department getDepartment(@PathVariable("id") Integer id)
return departmentMapper.getDeptByID(id);
@GetMapping("dept")
public Department insertDept(Department dept)
departmentMapper.insertDept(dept);
return dept;
注意,这是 @RestController, 而不是 @Controller;因为我是写数据到servlet,而不是到某个具体视图;
步骤2,修改springboot web项目配置(或有);
application.properties
# 服务器配置
server.port=8085
server.servlet.context-path=/springbt-mybatis2
小结,整体项目结构
【1.6】访问效果
http://localhost:8085/springbt-mybatis2/dept?departmentName=zhangsan01
http://localhost:8085/springbt-mybatis2/dept/13 http://localhost:8085/springbt-mybatis2/dept/13
【2】springboot使用配置引入mybatis
【2.1】 编写mybatis全局配置与sql文件
mybatis-config.xml 全局配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
【2.2】sql接口与sql映射文件
EmployeeMapper.java
// @Mapper 或 @MapperScan 把接口扫描装配到容器中
public interface EmployeeMapper
public Employee getEmpById(Integer id);
public void insertEmp(Employee empt);
<?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.cmc.springbt.mapper.EmployeeMapper">
<!-- 通过id查询emp -->
<select id="getEmpById" resultType="com.cmc.springbt.bean.Employee">
SELECT id, last_name, email, gender, d_id
FROM employee
where id = #id
</select>
<!-- 插入emp -->
<insert id="insertEmp">
INSERT INTO employee
(last_name, email, gender, d_id)
VALUES(#lastName, #email, #gender, #dID)
</insert>
</mapper>
【2.3】在 application.yml 中指定 mybatis配置
# 配置mybatis 全局配置文件和mapper路径
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
【2.4】编写 EmpController处理 employee请求
@RestController
public class EmpController
@Autowired
EmployeeMapper employeeMapper;
@GetMapping("/emp/id")
public Employee getEmp(@PathVariable("id") Integer id)
return employeeMapper.getEmpById(id);
小结, mybatis配置后的整体目录结构;
【2.5】访问效果
基于springboot2.5.5自建启动器starter制品库(代码片段)
【README】本文po出了自建springboot启动器步骤;【1】新建2个starter相关组件根据 mybatis-spring-boot-starter,我们看到自建starter需要两个组件,分别是xxx-spring-boot-starter,xxx-spring-boot-starter-autoconfigure; 查看详情
springboot2.5.5发布,2.6.0也要来了!(代码片段)
距离SpringBoot2.5.4发布一个月不到,SpringBoot2.5.5又来了!本次更新同步发布的版本还有SpringBoot2.4.11:这两个版本分别修复了41、32个bug,以及文档优化、依赖升级。又是两个bug优化版本,没什么好说的了,通... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
一、发布说明9月23日官方发布了SpringBoot2.5.5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
一、发布说明9月23日官方发布了SpringBoot2.5.5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
一、发布说明9月23日官方发布了SpringBoot2.5.5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
一、发布说明9月23日官方发布了SpringBoot2.5.5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化... 查看详情
快报!springboot2.5.6发布~我真跟不上了。。。(代码片段)
点击关注公众号,Java干货及时送达上一篇:SpringBoot2.5.5发布,2.6.0也要来了!是的,没过多少天,SpringBoot2.5.6 又来了:本次更新同步发布的版本还有SpringBoot2.4.12:这两个版本分别修复了43、36个bug&... 查看详情
使用 spring boot 2.5.5 和 Spring Cloud 2.0.4 创建 pubsubInputChannel 时出错
】使用springboot2.5.5和SpringCloud2.0.4创建pubsubInputChannel时出错【英文标题】:ErrorCreatepubsubInputChannelwithspringboot2.5.5andSpringCloud2.0.4【发布时间】:2021-12-0606:01:32【问题描述】:我使用的是SpringBoot2.3.3.Release,我们决定将版本更新到2.5.5... 查看详情
mybatis-03-简单配置mybatis
四、配置MyBatis4.1核心配置文件——mybatis-config.xmlMyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息。配置文档的顶层结构如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类... 查看详情
mybatis复习mybatis配置mybatis项目结构
项目结构:我在applicationContext.xml中有两个跟mybatis有关的内容:<importresource="mybatis-config.xml"/> 这里面配置了mybatis自身的配置信息<importresource="persistence-config.xml"/> 这里面配置了数据源信息applic 查看详情
深入浅出mybatis:mybatis的所有配置
上一篇介绍了JDBC的相关概念、MyBatis的特性与Hibernate的区别、MyBatis的基本组件与生命周期,基本可以使用MyBatis了。这一篇详细介绍MyBatis的配置,首先看下配置XML文件的层次结构,然后详细介绍每个配置项,说明每项的作用,值... 查看详情
mybatis源码:mybatis配置解析(代码片段)
Mybatis有两个核心配置,全局配置会影响Mybatis的执行;Mapper配置定义了查询的SQL,下面我们来看看Mybatis是如何加载配置文件的。 本文基于Mybatis源码(一):源码编译准备中案例进行分析,主要示例代码如下:publicstaticvoidma... 查看详情
mybatis配置文件——相关标签详解(代码片段)
目录一、Mybatis配置文件—properties标签二、Mybatis配置文件—settings标签三、Mybatis配置文件—plugins标签四、Mybatis配置文件—typeAliases标签五、Mybatis配置文件—environments标签六、Mybatis配置文件—mappers标签一、Mybatis配置文件—propert... 查看详情
mybatis的配置
<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3.dtd">***Mapper.xml前面的配置文件 查看详情
mybatis核心配置解析
配置解析核心配置文件mybatis-config.xml系统核心配置文件MyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息。能配置的内容如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类... 查看详情
聊聊手写mybatis注解配置方式
导航: 聊聊、Mybatis API 聊聊、Mybatis XML 聊聊、Mybatis集成SpringXML方式聊聊、Mybatis集成Spring注解方式聊聊、手写MybatisXML配置方式 在《聊聊、手写MybatisXML配置方式》中聊了通过XML配置方式来实现Mybati... 查看详情
mybatis配置文件
传送门:mybatis XML映射配置文件官方文档 配置文件中的标签顺序不能颠倒,否则会报错。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config 查看详情
配置mybatis
<properties><mybatis.version>3.2.8</mybatis.version><mybatis.spring.version>1.2.2</mybatis.spring.version><mybatis.paginator.version>1.2.15</mybatis.paginator.ve 查看详情