Spring Boot整合MyBatis操作过程
发布时间 - 2026-01-11 00:48:43 点击率:次1.加入mybatis-spring-boot-stater的Maven依赖

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
2.配置数据源
在src/main/resource中,application.properties配置文件中,这里面添加了一些数据库连接的信息
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3.代码注入数据源
package com.example;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
import org.springframework.web.servlet.DispatcherServlet;
import com.alibaba.druid.pool.DruidDataSource;
import com.example.Listener.IndexListener;
import com.example.filter.IndexFilter;
import com.example.servlet.MyServlet;
@SpringBootApplication
public class SpringBootSimpleApplication {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(env.getProperty("spring.datasource.url"));
dataSource.setUsername(env.getProperty("spring.datasource.username"));//用户名
dataSource.setPassword(env.getProperty("spring.datasource.password"));//密码
dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
dataSource.setInitialSize(2);
dataSource.setMaxActive(20);
dataSource.setMinIdle(0);
dataSource.setMaxWait(60000);
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(false);
dataSource.setTestWhileIdle(true);
dataSource.setPoolPreparedStatements(false);
return dataSource;
}
public static void main(String[] args) {
SpringApplication.run(SpringBootSimpleApplication.class, args);
}
}
4.增加MyBatis的配置
MyBatisConfig.java类:
package com.example.mybatis;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
@Configuration
//加上这个注解,使得支持事务
@EnableTransactionManagement
public class MyBatisConfig implements TransactionManagementConfigurer {
@Autowired
private DataSource dataSource;
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
try {
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
MyBatisMapperScannerConfig.java类:
package com.example.mybatis;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 扫描mybatis的接口
*/
@Configuration
// 因为这个对象的扫描,需要在MyBatisConfig的后面注入,所以加上下面的注解
@AutoConfigureAfter(MyBatisConfig.class)
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
//获取之前注入的beanName为sqlSessionFactory的对象
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
//指定xml配置文件的路径
mapperScannerConfigurer.setBasePackage("com.example.mybatis.mapper");
return mapperScannerConfigurer;
}
}
5.mybatis接口配置,这里使用student表作为示例
使用@Mapper注解来标识一个接口为MyBatis的接口,MyBatis会自动寻找这个接口
package com.example.mybatis.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface StudentMapper {
@Select("select * from student;")
public List<Map<String,Object>> find();
@Insert("insert into student(id,name,age,score_sum,score_avg) "+
"values(#{id},'Jim',33,200,100)")
public int insert(@Param("id")int id);
}
6.service业务层调用接口
package com.example.mybatis;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mybatis.mapper.StudentMapper;
@Service
public class StuMybatisService {
@Autowired
private StudentMapper studentMapper;
public List<Map<String,Object>> find(){
return studentMapper.find();
}
public int insert(int id){
return studentMapper.insert(id);
}
}
7.controller控制层调用service业务层
package com.example.mybatis;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/stumybatis")
public class StuMybatisController {
private static Logger logger = LogManager.getLogger(StuMybatisController.class);
@Autowired
private StuMybatisService stuMybatisService;
@RequestMapping("/list")
public List<Map<String,Object>> getStus(){
logger.info("从数据库读取Student集合");
return stuMybatisService.find();
}
@RequestMapping("/add")
public void addStus(){
logger.info("student表中入数据");
stuMybatisService.insert(2);
}
}
最终启动程序,进行访问:
http://localhost:8080/stumybatis/list
返回结果:
[{"score_sum":180.0,"name":"张三","id":1,"age":25,"score_avg":90.0},{"score_sum":200.0,"name":"Jim","id":2,"age":33,"score_avg":100.0}]
以上所述是小编给大家介绍的Spring Boot整合MyBatis的操作过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# spring boot 整合mybatis
# spring boot mybatis
# 小编
# 配置文件
# 在此
# 给大家
# 这里面
# 所述
# 给我留言
# 感谢大家
# 操作过程
# 疑问请
# 有任何
# druid
# pool
# Environment
# DispatcherServlet
# alibaba
# filter
# IndexFilter
# ServletListenerRegistrationBean
# DruidDataSource
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在云主机上快速搭建多站点网站?
Laravel Session怎么存储_Laravel Session驱动配置详解
如何快速打造个性化非模板自助建站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
HTML 中动态设置元素 name 属性的正确语法详解
使用C语言编写圣诞表白程序
原生JS实现图片轮播切换效果
如何快速搭建个人网站并优化SEO?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
高端网站建设与定制开发一站式解决方案 中企动力
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
网站建设保证美观性,需要考虑的几点问题!
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
如何在IIS7上新建站点并设置安全权限?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何在Windows服务器上快速搭建网站?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Linux网络带宽限制_tc配置实践解析【教程】
Laravel如何自定义分页视图?(Pagination示例)
如何在宝塔面板创建新站点?
如何在IIS服务器上快速部署高效网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
零服务器AI建站解决方案:快速部署与云端平台低成本实践
教你用AI将一段旋律扩展成一首完整的曲子
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
Laravel安装步骤详细教程_Laravel环境搭建指南
zabbix利用python脚本发送报警邮件的方法
如何用腾讯建站主机快速创建免费网站?
IOS倒计时设置UIButton标题title的抖动问题
如何在服务器上配置二级域名建站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Swift开发中switch语句值绑定模式
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何在IIS中新建站点并配置端口与物理路径?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
微信小程序 五星评分(包括半颗星评分)实例代码
如何在VPS电脑上快速搭建网站?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
详解阿里云nginx服务器多站点的配置
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
如何利用DOS批处理实现定时关机操作详解

