【持续更新】Mybatis常用代码汇总

目录

通用

[#{} 和 {}](#{} 和 {})

返回类型

查询

sql处理

in数组处理

if语句

[choose when](#choose when)

[association 一对一关联查询](#association 一对一关联查询)

日期格式


通用

#{} 和 ${}

在MyBatis 的xml映射配置文件中,动态传参有#{}和${}两种方式

1)#{}:动态解析 -> 预编译 -> 执行

2)${}:动态解析 -> 编译 -> 执行

1)变量替换后,#{} 对应的变量自动加上单引号 ''

2)变量替换后,${} 对应的变量不会加上单引号 ''

1)#{} 能防止sql 注入

2)${} 不能防止sql 注入

使用方式相同

(1)public User getUser(String username,String password);

<select id="getUser" resultType="com.User">select * from t user where username=#{arg0} and password=#{arg1}>

</select>

(2)使用自定义参数名,前提: 在映射器接口方法的参数前加注解@Param("")

public User getUser(@Param("username") String username,@Param("password") String password);

或 public User getUser(User user);

<select id="getUser" resultType="com.User">select * from t user where username=#{username} and password=#{password} </select>

返回类型

1.实体类: 将查询结果封装为Java对象,通常是自定义的实体类

2.Map: 将查询结果封装为Map对象

3.List: 将查询结果封装为List对象。

4.Array: 将查询结果封装为数组对象

5.ResultMap: 将查询结果封装为ResultMap对象

6.自定义类型外理器:根据自定义类型的类或数据类型外理查询结果,将查询结果封装为自定义类型的对象

7.Void: 不返回任何结果。

8.Cursor: 返回结果集的游标,可以逐行读取结果集

9.InputStream: 返回结果集的二进制流,适合处理较大的结果集

查询

sql处理

in数组处理

<if test="bankids !=null and bankids.size()>0" >

and (t.BANKID IN

<foreach item="item" collection="bankids" open="(" close=")" index="index">

<if test="index != 0">

<choose>

<when test="index % 1000 == 999">) OR t.BANKID IN(</when>

<otherwise>,</otherwise>

</choose>

</if>

#{item}

</foreach>)

</if>

if语句

<if test="startdate !=null">

AND t.TRANDATE &gt;= to_date(#{startdate},'yyyy-MM-dd HH24:mi:ss')

</if>

choose when

<choose>

<when test="index % 1000 == 999">) OR t.FILLINFOSTATE IN(</when>

<otherwise>,</otherwise>

</choose>

association 一对一关联查询

<association property="customer" javaType="Customer"

select="com.xu.mapper.CustomerMapper.selectById"

column="{id:customer_id}">

</association>

日期格式

and t.trandate <!CDATA\[\>=]> to_date(#{startDate},'yyyy-MM-dd')

相关推荐
用户0942485680339 分钟前
第20章:JVM G1 GC原理、日志与调优实战
java·jvm
lusklusklusk40 分钟前
Python 四大数据结构详解:元组、列表、集合、字典的特点与增删改查
数据结构·windows·python
打工仔折腾 AI43 分钟前
把模型切换交给平台:用蓝耘智能路由搭建商品评论分析工具
java·服务器·前端·后端·python·性能优化·ai agent 实战
后端LV1 小时前
Caffeine 源码详解:为什么它是最快的 Java 本地缓存——一次压测引发的源码考古
java·后端
今年下半年1 小时前
【运维】windows虚拟机安装arm(aarch64)服务器
运维·windows·arm·虚拟机·aarch64
dadaobusi1 小时前
Trace-driven 建模(基于轨迹/踪迹的建模)
java·后端·spring
知守观1 小时前
OBS 同名文件互相覆盖,客户拿错了别人的报告:一次文件串号的排查与重构
java·后端
泡海椒2 小时前
JQuick-Excel 字段映射实战:用 MAPPING 固化 Excel 表头与业务字段契约
xml·java·开发语言·excel
浪潮IT馆2 小时前
Windows 10 安装 PostgreSQL 9.6.24 完整教程
数据库·windows·postgresql
梦幻通灵2 小时前
IDEA 实用快捷键【持续更新】
java·ide·intellij-idea