SpringBoot3集成Mybatis
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);
}

浙公网安备 33010602011771号