Spring boot整合mybatis实现过程图解
作者:岁月染过的梦 发布时间:2023-01-15 09:31:05
标签:spring,boot,整合,mybatis
导入mybatis jar包
右键pom.xml
模拟springboot底层实现类
1.
定义接口
@Mapper
public interface GoodsDao {
/**
* 基于商品id删除商品
* @param id 商品id
* @return 删除行数
* 数据层方法对象的sql映射
*/
@Delete("delete from tb_goods where id=#{id}")
//当传入的参数只有一个且不是数组时
//#{id}这个地方的变量可以不是传入的参数名(自己随意)
int deleteById(Integer id);
}
测试
@SpringBootTest
public class TestGoods {
@Autowired
private GoodsDao gd;
@Test
void TestGoods() {
int i =gd.deleteById(10);
System.out.println(i);
}
}
2.
自己实现
接口方法
@Mapper
public interface GoodsDao {
/**
* 基于商品id删除商品
* @param id 商品id
* @return 删除行数
* 数据层方法对象的sql映射
*/
@Delete("delete from tb_goods where id=#{id}")
int deleteById(Integer id);
}
@Component
public class GoodsDaoImpl {
@Autowired
private SqlSession sqlSession;
public int deleteById(Integer id) {
return sqlSession.delete("com.cy.demo.goods.dao.GoodsDao.deleteById", id);
//sqlSession.delete("com.cy.demo.goods.dao.deleteById",id)
}
}
@SpringBootTest
public class GoodsDaoImpTest {
@Autowired
private GoodsDaoImpl gdi;
@Test
void testdelete() {
int i = gdi.deleteById(9);
System.out.println(i);
}
}
直接导mapper文件找对应的元素
3.
当sql语句比较复杂时使用映射文件
接口:
/**
*GoodsDao.java
* ids可以接受多个参数
* 在mapper文件中直接使用array来接受,
* @param ids
* @return
*/
int deleteObject(/*@Param("ids")*/Integer...ids);
//当mybatis过低时需要加上@Param("ids")才能识别
不加@Param("ids")报错
使用xml映射
获取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="com.cy.demo.goods.dao.GoodsDao">
<delete id="deleteObject">
delete from tb_goods
<where>
<if test="ids!=null and ids.length>0">
id in
<foreach collection="ids" open="(" close=")" separator=","
item="i">
#{i}
</foreach>
</if>
or 1=2
</where>
</delete>
</mapper>
配置:
测试:
@Autowired
private GoodsDao gd;
@Test
void deleteObject() {
int rows=gd.deleteObject(1,2,3);
System.out.println(row);
}
当我们在执行此方法时,其实现类内部会检测接口方法上是否有定义sql映射
假如没有,然后基于接口类全名找到对应的映射文件(mapper映射文件的id),然后在基于方法名
再找到对应映射文件的元素,进而获取sql映射
错误解决:
binding异常还有可能时参数异常,还有可能是配置文件有问题
来源:https://www.cnblogs.com/syrgdm/p/13414448.html


猜你喜欢
- springboot获取项目目录路径springboot部署后获取项目的路径//获取跟目录(绝对路径)File path = new Fil
- 1、super的使用:(1)super是一个关键字。(2)super和this很类似,我们对比着学习。2、先复习一下this关键字的使用。(
- 一、延迟加载resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),associati
- 现在许多系统的注册、登录或者发布信息模块都添加的随机码功能,就是为了避免自动注册程序或者自动发布程序的使用。验证码实际上就是随机选择一些字符
- 一、背景有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,一般我们检
- 在最近的项目中有个需求是这样的:入参封装成JSON,EXAMPLE:{ "uuid": "iamauuid&q
- Android基础教程数据存储之文件存储将数据存储到文件中并读取数据1、新建FilePersistenceTest项目,并修改activit
- 今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取某部分的硬件信息就
- Unity中,我们怎么制作UI物体发光的渐隐渐现的效果呢?比如说我们有一张月亮光晕的精灵图片我们可以给它添加一个CanvasGroup组件我
- 需求:视频通话界面,两个surfaceView一个显示本端的视图,另一个显示对端的视图,由于显示比例的问题总会存在一个覆盖另一个的问题,为保
- 1. 服务端配置java启动命令增加以下参数即可:-Dcom.sun.management.jmxremote \-Dcom.sun.man
- 说点对这几个容易混淆的词的理解:1、c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识
- 本文介绍了Android 删除所有build编译文件,翻译磁盘空间,分享给大家,也给自己留个笔记,具体如下: public static v
- 冒泡排序冒泡排序是一种比较简单的排序算法,我们可以重复遍历要排序的序列,每次比较两个元素,如果他们顺序错误就交换位置,重复遍历到没有可以交换
- Android ListView的Item点击效果的定制
- JAVA多线程断点下载原理如图:代码如下:import java.io.BufferedReader; import java.io.Fil
- 废话不多说了,下面代码给大家介绍下利用正则表达式判断字符的方法,具体代码如下所示:using System;using System.Tex
- MyBaties的基本配置标签1-全局配置文件(xxx.properties)引入的两种方式resource:引入类路径下的资源url:引入
- 1.关系运算符!= 与等号共同组成关系运算符,检查两个操作数的值是否相等,如:A!=B2.逻辑运算符! 称为逻辑非运算符。用来逆转操作数的逻
- 我们在日常开发时会经常遇到将一个字符串按照指定的字符进行分割。这时,我们往往会想到使用str.split(","),进行