SpringBoot3集成Mybatis入门教程
创作时间:
作者:
@小白创作中心
SpringBoot3集成Mybatis入门教程
引用
1
来源
1.
https://www.cnblogs.com/shidawuyu/p/18771337
本文详细介绍了如何在SpringBoot3项目中集成Mybatis,包括基本配置、XML映射、Mapper接口定义、Service实现以及增删改查等常见操作的实现。通过本文,读者可以快速掌握SpringBoot与Mybatis的整合方法,为开发基于SpringBoot的数据库应用提供参考。
Mybatis
Mybatis是一款优秀的持久层框架,支持自定义SQL,Mybatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java对象为数据库中的记录
SpringBoot配置Mybatis
前提pom.xml中已经导入mybatis依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
#配置Mybatis实体和xml映射
mybatis:
#映射XML
mapper-locations: classpath:mapper/*.xml
configuration:
#配置日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#驼峰命名
map-underscore-to-camel-case: true
基本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="">
</mapper>
xml与mapper下的接口一一对应关系
告诉Springboot如何扫描到mapper包路径(在springbootApplicantion中添加注解)
@MapperScan("com.example.springboot1.mapper")
创建service并且标注为Springboot里面的一个bean
package com.example.springboot1.service;
import org.springframework.stereotype.Service;
@Service
public class YongHuService {
}
mapper和Mapper.xml对应关系
接口路径(/yonghu/selectAll)
数据请求流程:前端浏览器->Springboot浏览器->Mybatis->Mysql->Java对象->Json对象->浏览器
通过注解查询单个用户
@Select("select * from yonghu where id=#{id}")
YongHu selectById(Integer id);
接口传参方式
@PathVariable
@RequestParam
传递多个参数
/**
* 查询单个
* @return
*/
@GetMapping("/selectOne")
public Result selectOne(@RequestParam Integer id,@RequestParam(required = false) String xingBie){
YongHu yongHu1=yongHuService.selectById(id);
return Result.success(yongHu1);
}
参数传递
分页查询,引入pagehelper插件
<!--分页插件pageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
在Service里面通过三行代码实现分页查询
public PageInfo<YongHu> selectPage(Integer pageNum,Integer pageSize){
PageHelper.startPage(pageNum,pageSize);
List<YongHu> list=yongHuMapper.selectAll();
return PageInfo.of(list);
}
分页接口
/**
* 分页查询
* @param pageNum 当前页码
* @param pageSize 每页个数
* @return
*/
@GetMapping("/selectPage")
public Result selectPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize){
PageInfo<YongHu> pageInfo=yongHuService.selectPage(pageNum,pageSize);
return Result.success(pageInfo);
}
使用Mybatis实现增删改操作
GET:查询;POST:新增;PUT:修改;DELETE:删除; @RequstBody可以把前端传来的Json字符串映射成Java对象或者数组
Mybatis里面写sql使用下划线,涉及到绑定Java对象值就写驼峰
<insert id="add" parameterType="com.example.springboot1.entity.YongHu">
insert into yonghu (addtime,yonghuzhanghao,mima,yonghuxingming,xingbie,lianxifangshi,shenfenzheng,youxiang,touxiang)
values (#{addTime},#{yongHuZhangHao},#{miMa},#{yongHuXingMing},#{xingBie},#{lianXiFangShi},#{shenFenZheng},#{youXiang},#{touXiang})
</insert>
<update id="updateById" parameterType="com.example.springboot1.entity.YongHu">
update yonghu set addtime=#{addTime},yonghuzhanghao=#{yongHuZhangHao},mima=#{miMa},yonghuxingming=#{yongHuXingMing},xingbie=#{xingBie},
lianxifangshi=#{lianXiFangShi},shenfenzheng=#{shenFenZheng},youxiang=#{youXiang},touxiang=#{touXiang}
where id=#{id}
</update>
@Delete("delete from yonghu where id=#{id}")
void deleteById(Integer id);
/**
* 新增数据
* @param yongHu
* @return
*/
@PostMapping("/add")
public Result add(@RequestBody YongHu yongHu){
yongHuService.add(yongHu);
return Result.success();
}
/**
* 更新数据
* @param yongHu
* @return
*/
@PutMapping("/update")
public Result update(@RequestBody YongHu yongHu){
yongHuService.update(yongHu);
return Result.success();
}
/**
* 删除数据
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
public Result deleteById(@PathVariable Integer id){
yongHuService.deleteById(id);
return Result.success();
}
/**
* 查询所有
* @return
*/
@GetMapping("/selectAll")
public Result selectAll(){
List<YongHu> list=yongHuService.selectAll();
return Result.success(list);
}
Resouce.getResouceAsSteam("sqlMapConfig.xml")factory=new ...Builder.build(is)sqlSession =factory.openSession(true);
热门推荐
Excel中输入数字会改变怎么办?
远程医疗在基层医疗服务中的应用现状、困境与突破路径
十年磨一剑!浅谈飞升后的变化及PK走向
青松聊育儿:穷人的孩子早当家?真相让你大吃一惊!
健身完吃荔枝好吗?营养师教你科学补充
炖牛肉用什么部位的肉?
探索恩施土家女儿城至恩施大峡谷的自然与文化之旅
专业指导:备孕前怎么调理身体,如何打造最佳受孕状态?
连签三份合同,未在合同到期前要求续签无固定期,憾被合法终止
新版老年人平衡膳食宝塔,亮点有哪些
上海天文馆常设展:六大展区带你探索宇宙奥秘
秦始皇统一中国,靠的不只是武力,还有它们|观展
团队如何预防有卧底
武汉一小学这样落实“器乐进课堂”:先学口风琴再学竖笛
医生解答:吃辣后肚子痛是否是肠炎的表现?
乳腺癌术后患者能否食用蜂蜜?医生的专业解答来了
马斯克宣布火星计划:2年内发射无人飞船,20年内建城市!
生活观察丨四季豆有食品安全风险?专家建议这样吃更安全
庚金在八字命格中的意义与象征
卧室面积太小怎样装修?告别空间拥挤,巧妙利用小空间的装修妙招
启蒙运动:理性寻找光明
双代号网络计划是什么?其作用与类型定义详解
田蚡:汉武帝舅舅的权谋人生与悲剧结局
智慧果园云平台:物联网技术在农业中的创新应用
怀孕后高血压需要进行哪些检查?
一文读懂:快充到底会不会伤手机电池?看完就明白了!
薛岳将军之墓在哪?自创天炉战法,歼灭日军10万,名扬世界
充电器新纪元:科技引领充电速度
劳动法病假单开具医院的相关规定及流程
有关蛇的神话传说数不胜数!灵蛇传奇,穿越古今