@Param

1.如果dao方法中只有一个参数,入参可以为#{0}或者#{任意单词},也可以使用@Param指定参数名称,sql中就只能#{指定名称}获取参数

public List<Region> selectRegion(String region_code);
<select id="selectRegion" resultType="java.util.Map">
select
id,
create_time,
update_time,
isvalid,
region_code,
parent_region_code,
name,
region_path,
region_level,
sort,
geometry
from region_info
where 1=1
<if test = "region_code != null">
AND region_code = #{0}
</if>
</select>
<select id="selectRegion" resultType="java.util.Map">
select
id,
create_time,
update_time,
isvalid,
region_code,
parent_region_code,
name,
region_path,
region_level,
sort,
geometry
from region_info
where region_code = #{aaa}
</select>

2.如果dao方法中有多个参数,可以使用@Param指定参数名称,sql中必须使用指定的参数名称作为入参#{指定名称}

public List<Region> selectAllRegion(@Param("region_code")String region_code,@Param("name")String name);
<select id="selectAllRegion" resultType="java.util.Map">
select
id,
create_time,
update_time,
isvalid,
region_code,
parent_region_code,
name,
region_path,
region_level,
sort,
geometry
from
region_info
where 1=1
<if test="region_code != null">
AND region_code = #{region_code}
</if>
<if test="name != null">
AND name like '%' || #{name} || '%'
</if>
</select>

假如我们不使用@Param指定名称,sql中可以使用#{arg0},#{arg1}...这种形式匹配对应入参

public List<Region> selectAllRegion(String region_code,String name);
<select id="selectAllRegion" resultType="java.util.Map">
select
id,
create_time,
update_time,
isvalid,
region_code,
parent_region_code,
name,
region_path,
region_level,
sort,
geometry
from
region_info
where 1=1
AND region_code = #{arg0}
AND name like '%' || #{arg1} || '% '
</select>

总结:尽量使用@Param方式指定传参

@Mapper

将dao类划归spring管理

@Param注解和@Mapper注解的更多相关文章

  1. 详解 @MapperScan 注解和 @Mapper 注解

    实际上,这是一个非常简单的问题.我并没有一口回绝他,让他去百度.因为,新人都会经历这个过程.好不容易,问你一次,你直接让他百度,会打击到他的.而且,别人会觉得你摆架子. @Mapper 这个注解的定义 ...

  2. @Repository注解和@Mapper注解区别

    @Reponsitory注解 @Reponsitory使用后,在启动类上需要添加@MapperScan("xxx.xxx.xxx.mapper")注解 @Mapper注解 @Map ...

  3. MyBatis中的@Mapper注解及配套注解使用详解(上)

    前言: 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(那个xml写的是真的蛋疼...).很恶心的一个事实是源码中并没有对于这个注解的详细解释 现在我们 ...

  4. 我为什么放弃使用MyBatis3的Mapper注解

    最近在使用MyBatis3做项目.在使用注解实现Mapper的时候遇到了比较奇葩的问题:在实现数据的batch insert的时候总是报错.好不容易可以正常插入了,但是又不能返回自增的主键id到实体b ...

  5. MyBatis中的@Mapper注解 @Mappe与@MapperScan关系

    从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件 现在项目中的配置 public interface DemoMapper{ int deleteByPr ...

  6. 我为什么放弃使用mybatis3的mapper注解了

    原文链接 最近在使用MyBatis3做项目.在使用注解实现Mapper的时候遇到了比较奇葩的问题:在实现数据的batch insert的时候总是报错.好不容易可以正常插入了,但是又不能返回自增的主键i ...

  7. @Mapper注解在springboot中无法注入

    问题① @Mapper注解报红无法注入 方法 在pom文件中添加依赖

  8. SPRINGBOOT配置事物注解和@MAPPER注意

    MAPPER接口要使用@Mapper注解,不能用@Compent @Repository,否则没有效果 一.开启事物 在启动类上加 @EnableTransactionManagement //如果m ...

  9. Mapper注解与MapperScan注解

    1.Mapper注解 在接口类上添加@Mapper,在运行时动态代理生成实现类 @Mapper public interface UserDao { // User getUser(); } 如果想要 ...

随机推荐

  1. 拒绝for循环,从take_along_axis开始

    技术背景 在前一篇文章中,我们提到了关于Numpy中的各种取index的方法,可以用于取出数组里面的元素,也可以用于做切片,甚至可以用来做排序.但是遇到对于高维矩阵的某一个维度取多个值的时候,单纯的使 ...

  2. KVM 虚机镜像操作, 扩容和压缩

    KVM镜像操作 qemu-img命令 创建镜像 qemu-img create # 创建一个设备空间大小为10G的镜像 qemu-img create -f qcow2 centos7-guest.q ...

  3. ensp练习:防火墙安全策略配置

    一.实验目的:1. 了解华为防火墙安全策略.2. 掌握华为防火墙安全策略的配置.二.实验仪器:计算机.华为ensp模拟器.华为防火墙三.实验内容:在这里插入图片描述根据网络拓扑图如上(交换机不需要配置 ...

  4. .net core多环境发布部署

    1.新建的asp.net core项目默认会有appsettings.json和appsettings.Development.json, 新建一个生产环境appsettings.Production ...

  5. MySQL性能优化之索引设计

    作者:IT王小二 博客:https://itwxe.com 上一篇给小伙伴们讲了关于SQL查询性能优化的相关技巧,一个好的查询SQL离不开合理的索引设计.这篇小二就来唠一唠怎么合理的设计一个索引来优化 ...

  6. 操作系统以及python的简介

    今日笔记 操作系统 文件的概念 编程语言的发展史 编程语言的分类 python简介 python解释器的版本说明 内容详细 操作系统 ​ 操作系统(Operating System,简称OS),是管理 ...

  7. HTML 音乐

    <audio preload autoplay loop id="vd"> <source src="/static/audio/hua.mp3&quo ...

  8. CF1385G口胡

    只能说很神秘??? 首先观察题面,假设给出的第一个序列为 \(a\),第二个序列为 \(b\).对于 \((a_i,b_i)\) 我们连一条边. 得到的是一个 \(n\) 个点 \(n\) 条边的不一 ...

  9. vue js计算精度问题处理,兼容XP系统

    js计算精度问题(浮点数误差,大数计算出错) JavaScript 运算时经常遇到会 0.000000001 和 0.999999999 这样奇怪的结果. 网上教程一大篇,原理请百度,抄作业往下看!! ...

  10. Python入门随记(2)

    1.二维列表的声明 [['pygis'],['gis']] 2.CSV格式的本质,是用,作为分隔符. 3.for循环 for -- in -- 例: a=0 for i in range(100): ...