news 2026/10/17 2:47:16

mybatis进阶使用(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mybatis进阶使用(上)

补充:

1.在开发中遇到数据表的字段和实体的属性名不匹配时的处理方法
a.查询的时候给查询条件取别名
例:

User selectUser(@Param("userName") String name, @Param("userAge") Integer age);

@param("xxx")这个注解就是给实体属性名起的别名,在对应的xml配置文件中的sql语句就可以写为

SELECT * FROM USER WHERE USERNAME = #{userName} AND USERAGE = #{userAge}

括号内就放你起的别名

b.建立属性和字段的映射关系

在对应的mapper映射文件(xml文件)里面进行提前映射

例:

<resultMap id="userResultMap" type="com.example.User"> <!-- 主键映射 --> <id property="id" column="user_id"/> <!-- 普通字段映射 --> <result property="userName" column="user_name"/> <result property="userAge" column="age"/> </resultMap>

property:Java 实体类的属性名

column:数据库表的列名

id 用于主键,result 用于普通字段

这样配置好后就可以用这个配置名替换resultType为resultMap

例:

<select id="selectUser" resultMap="userResultMap"> SELECT user_id, user_name, age FROM user WHERE user_id = #{id} </select>

2.开启驼峰命名自动映射
如果数据库是 user_name 这种下划线风格,Java 是 userName 驼峰风格,可以在 MyBatis 全局配置文件(mybatis-config.xml)里开启自动映射:

<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>

1.动态sql

where - if:

例:当有三个位置可能有参数传递时(ID,name,age)

那么xml映射文件里的对应代码就应该写为

<select id="selectUser" resultType="com.example.User"> SELECT * FROM user <where> <if test="id != null"> AND id = #{id} </if> <if test="name != null and name != ''"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </where> </select>

foreach:

当需要查询一个数组里所有的数时可以用

List<User> selectByIds(@Param("ids") List<Integer> ids);
<select id="selectByIds" resultType="com.example.User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </select>

属性 说明 是否必需
collection 要遍历的集合/数组名 必需
item 每次遍历的元素别名 必需
index 遍历的索引(List 是下标,Map 是 key) 可选
open 循环开始前拼接的字符串 可选
close 循环结束后拼接的字符串 可选
separator 每次循环之间的分隔符 可选

2.在sql语句中的运算符转译

"<"的转义符为

">"的转义符为

">="的转义符为

"<="的转义符为

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 2:46:57

GPU服务器租用性能验收:CPU线程与NUMA亲和性排查实战

在云端GPU租赁场景中&#xff0c;显卡型号一致并不代表训练速度一致。大模型训练或深度学习任务如果长期“GPU吃不满”&#xff0c;问题可能不在CUDA&#xff0c;而在CPU线程、内存带宽和NUMA访问路径。本文给出一套可复现的验收流程&#xff0c;帮助开发者在正式跑任务前定位主…

作者头像 李华
网站建设 2026/10/17 2:46:55

【环境方向 SCI期刊推荐】环境 SCI 捡漏!扩刊红利期黑马刊 + 经典顶刊,3 区到 1 区全覆盖,好投又稳妥 | 环境领域黑马 SCI 发文量翻倍,附4本经典稳刊,毕业结题首选,适配各阶段

环境科学领域的科研人投稿&#xff0c;常陷入两难困境&#xff1a;冲顶刊则审稿周期长、拒稿率高&#xff0c;耗时耗力容易耽误毕业、结题节点&#xff1b;选保底刊又容易踩中预警、自引率超标的水刊&#xff0c;最终成果不被认可。 当前不少环境类SCI 期刊正处于扩刊红利期&am…

作者头像 李华
网站建设 2026/10/17 2:46:55

Spring 配置文件完全指南:从 XML 到 Spring Boot,一次搞懂

Spring 系列目录 篇目标题状态 第 1 篇 Spring 入门与 Spring MVC 实战指南&#xff1a;从零理解 IoC 到 RESTful 图书管理 已发布 第 2 篇 告别 new 地狱&#xff1a;用大白话彻底搞懂 Spring IoC 与 DI 已发布 第 3 篇 Spring 配置文件完全指南&#xff1a;从 XML 到…

作者头像 李华
网站建设 2026/10/17 2:46:16

坚果云团队版管理最佳实践:从5人到500人的权限体系设计

文章目录一、权限管理的「规模墙」&#xff1a;为什么 5 人团队的方法在 50 人时失效&#xff1f;翻车案例一&#xff1a;创业公司的「权限噩梦」翻车案例二&#xff1a;设计公司的「权限过度」问题的本质二、5 人团队&#xff1a;轻量级权限方案2.1 核心原则&#xff1a;简单够…

作者头像 李华
网站建设 2026/10/17 2:46:11

SGM61630实战指南:重构Buck为反向Buck-Boost生成负电源轨

本文将以圣邦微电子的SGM61630芯片为例&#xff0c;系统性地为你拆解如何将一个标准的Buck&#xff08;降压&#xff09;变换器&#xff0c;重构为一个能够稳定输出负电压的反向Buck-Boost变换器。我们将从拓扑原理、电压电流应力分析出发&#xff0c;详细讲解关键辅助功能&…

作者头像 李华