浅谈为什么要使用mybatis的@param
作者:Caeser110 发布时间:2023-07-01 20:12:39
标签:mybatis,@param
起因
我们先来看一个报错
报错很简单,参数 start 没找到。
我是在实现一个 API 接口时发现了一个问题,当我不使用 @Param 标签时,mybatis 是不认识哪个参数叫什么名字的,尽管我定义了 (long start,long end) 它仍然不认识。在这个接口上,我希望根据前端传来的参数,查找指定范围的数据,例如:我想搜索第二页的数据,假设一页20个,那么搜索的范围就是21-40,于是就会调用接口中的 getTypeListByRange 来查找对应 mapper 的 SQL 语句。
public interface TypeDao {
Type getTypeByid(long id);
List<Type> getTypeListAll();
List<Type> getTypeListByRange(long start,long end);
}
解释 @Param
org.apache.ibatis.annotations.Param 当映射器方法需要多个参数时,这个注解可以被用于:给映射器方法中的每个参数来取一个名字。否则,多参数将会以它们的顺序位置和SQL语句中的表达式进行映射,这是默认的。
语法要求:若使用@Param(“id”),则SQL中参数应该被命名为:#{id}。
使用
Dao 层
import org.apache.ibatis.annotations.Param;
import com.caeser.upmovie.entity.Type;
public interface TypeDao {
Type getTypeByid(long id);
List<Type> getTypeListAll();
List<Type> getTypeListByRange(@Param("start")long start,@Param("end")long end);
}
Mapper
<select id="getTypeListByRange" resultType="com.caeser.upmovie.entity.Type">
SELECT
ID,
NAME,
CREATE_TIME,
UPDATE_TIME
FROM
upm_type
LIMIT
#{start},#{end};
</select>
单元测试
public class TypeTest extends BaseTest{
@Autowired
private TypeDao typeDao;
@Test
public void testDao(){
List<Type> typeList1=typeDao.getTypeListByRange(1, 4);
for(int i=0;i<typeList1.size();i++){
System.out.println(typeList1.get(i).getName());
}
}
}
结果
总结
当 Dao 层传递参数为多个参数时,为了规范,必须使用 @Param 给参数命名。这里需要注意,使用的是 mybatis 的 param 来命名。
来源:https://blog.csdn.net/Caeser110/article/details/102510782


猜你喜欢
- 前言这几天在做一个小工具app,结果在fragment里面动态申请权限提示原有的申请方法已经弃用,还画了很明显的删除线。。。这叫一个强迫症的
- java list,set,map,数组间的相互转换详解1.list转setSet set = new HashSet( new Array
- 一般来说课本上的数据结构包括数组、单链表、堆栈、树、图。我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用
- 首先来看效果: 一、实现原理在实现过程中,主要考虑整个界面由若干个字母组成的子母线条组成,这样的话把固定数量的字母封装成一个字母线条,而每个
- 本文实例讲述了Android自定义个性化的Dialog。分享给大家供大家参考,具体如下:Dialog:mDialog = new Dialo
- 本文主要介绍了关于单例模式的一些问题,想学习C#单例模式的同学们可以看一看,还是有些帮助c#中的单例模式单例模式是指在设计一个类时,保证在运
- 在我们对gc中的算法有基本概念理解后,要把算法的理念实现还需要依托实际垃圾收集器的使用。因为光靠一些简单的原理不足以支撑整个程序的运行,在回
- springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经
- 本文以实例形式讲述了基于Java的图的广度优先遍历算法实现方法,具体方法如下:用邻接矩阵存储图方法:1.确定图的顶点个数和边的个数2.输入顶
- 默认格式public class MyClass implements Serializable{...}序列化:ObjectOutputS
- 一、单向通信功能:客户端发送一句话到服务器:客户端:public class TestClient {//客户端
- 安卓项目开发中,项目中使用到jni开发,使用C/C++编写了自己的so库,调试和运行一切正常,Android.mk文件代码如下:LOCAL_
- 前言终于来到了Maven的插件开发,其实Maven的插件并没有想象的那么难,刚开始讲Maven基础的时候就演示了一下JDK是如何打包的,Ma
- 1 起因在实际业务开发中, 我们经常会遇到需要临时创建一个数组的情况, 今天我们就来讲一下Java中ArrayList初始化的方法2 解决方
- 一:深入解析JSTL标签库 1、什么是JSTL标签库①Java Standard Tag Lib(Java标准的标签库)。②JST
- 在springboot中,默认继承好了一套完好的redis包,可以直接使用,但是如果使用中出了错不容易找到错误的原因,因此这里使用自己配置的
- 1.依赖的jar文件 jsch-0.1.53.jar2.登录方式有密码登录,和密匙登录 代码:主函数:import java.ut
- 1.引入依赖 <!--mybatisplus依赖--> <dependency> &nbs
- 其实说实话,没有多大的可比较性,它们是完全不同的两个东西,它们的抽象不在同一个层级上。但是为了让大家更好的理解,还是做一个比较吧,毕竟它们都
- 0、前言本文主要对几种常见Java序列化方式进行实现。包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Pro