mybatis中_parameter使用和常用sql

MyBatis _databaseId和 _parameter参数变量(动态SQL) _databaseId参数变量 若在MyBatis配置文件中设置了databaseIdProvider,则可以使用_databaseId 参数,这样就可以根据不同的数据库厂商构建特定的语句。_databaseId 就是代表当前数据库的别名Oracle。 databaseIdProvider配置: <databaseIdProvider type="DB_VENDOR"> ... 阅读详情

 1. 简单数据类型,此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType=INTEGER},如果需要if test则一定
    使用<if test="_parameter != null">,此处一定使用_parameter != null而不是id != null
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="Java.lang.Integer" >
 select 
 <include refid="Base_Column_List" />
 from base.tb_user
<if test="_parameter != null">
 where id = #{id,jdbcType=INTEGER}
</if>
</select>
 2. 一个对象数据类型,此时#{name,jdbcType=CHAR},#{sex,jdbcType=CHAR}中的name和sex一定要使用user对象的属性名
测试user对象<if test="_parameter != null">,测试user对象属性<if test="name != null">或者<if test="#{name} != null">
int insert(User user);
<insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into tb_user (name, sex) values (#{name,jdbcType=CHAR}, #{sex,jdbcType=CHAR})
 3. 二个对象数据类型
List<User> select(User user,Page page),此时if test一定要<if test='_parameter.get("0").name != null'>(通过parameter.get(0)
得到第一个参数即user);where语句where name = #{0.name,jdbcType=CHAR}(通过0.name确保第一个参数user的name属性值)

不用0,1也可以取名List<User> select(@param(user)User user,@param(page)Page page)
 4. 集合类型,此时collection="list"会默认找到参数的那个集合idlist(collection="list"这是默认写法,入参为数组Integer[] idarr,则用collection="array")
User selectUserInList(List<Interger> idlist);
<select id="selectUserInList" resultType="User">
SELECT * FROM USER  WHERE ID in
 <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
 </foreach>
</select>
 5. 对象类型中的集合属性,此时collection="oredCriteria"会找到入参example这个非集合对象的oredCriteria属性,此属性是一个集合
List<User> selectByExample(UserExample example);
<where>
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
 6. map类型(分页查询教师信息)
public List<Teacher> findTeacherByPage(Map<String, Object> map); 
Map<String, Object> params = new HashMap<String, Object>(); 
//以name字段升序排序,params.put("sort", "name"); params.put("dir", "asc");
//查询结果从第0条开始,查询2条记录 params.put("start", 0);  params.put("limit", 2);  
//查询职称为教授或副教授的教师  params.put("title", "%教授"); 
此时入参map的key相当于一个object的属性名,value相当于属性值
<select id="findTeacherByPage"resultMap="supervisorResultMap" parameterType="java.util.Map">
select * from teacher where title like #{title}           
        order by ${sort} ${dir} limit #{start},#{limit} 
</select> 

 7.批量插入
<insert id="addRoleModule" parameterType="java.util.List">
INSERT INTO T_P_ROLE_MODULE (ROLE_ID, MODULE_ID)
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">  
SELECT #{item.roleId}, #{item.moduleId} FROM DUAL
</foreach>  
</insert>
  8.MyBatis+MySQL 返回插入的主键ID
在mapper中指定keyProperty属性,示例如下:
我们在insert中指定了keyProperty="userId"和useGeneratedKeys="true",其中userId代表插入的User对象的主键属性。
System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入前主键为:"+user.getUserId());  
    <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">  
 insert into user(userName,password,comment)  
 values(#{userName},#{password},#{comment})  
    </insert>  

关于mybatis 传入基本参数类型使用if test 判断出错的问题等注意事项 在使用mybatis传入基本参数类型时,比如parameterType="java.lang.Long",使用if test 判断会报错,所以需要使用_parameter 当做入参 正确代码: <select id="findById" parameterType="java.lang.Long" resultMap="BaseResultMap"> select ... 阅读详情

相关推荐

Frida实战:从adb连接到安卓设备参数加密Hook全流程解析

本文详细解析了使用Frida进行安卓应用动态分析的全流程。通过adb连接设备并部署Frida服务端,结合静态分析与动态Hook技术,精准定位并拦截关键函数,特别是针对参数加密等核心逻辑的实时监控与修改,为逆向分析与安全研究提供了高效实战方案。

weixin_29208077的博客 343

mybatis中_parameter使用和常用sql的讲解

一、通过Idea逆向工程发现sql语句有这样一句话    &lt;if test="_parameter != null" &gt; &lt;include refid="Example_Where_Clause" /&gt; &lt;/if&gt;二、这个_parameter到底指的是什么东西呢           看名字能知道就是参数的意思。但是具体呢?            1、这个_p...

Holme221B的博客 2759

相衬成像介绍

相衬成像介绍

qq_41981768的博客 2913

mybatis中只有一个参数而且还要if判断

mybatis中只有一个参数而且还要if判断

m0_51392342的博客 847

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 548

信号处理中的滤波器的阶数和谐波的理解

最近在读paper的时候,遇到了一些以前遗忘的问题,先重新查找,记录在这里,以备不时之查看。 我相信一定有小伙伴跟我有过一样的疑惑,那就是我们在使用滤波器的时候,总是遇到滤波器的阶数这个概念参数,我们很多都是根据别的paper里的设置,设置自己的科研参数,其实并不是很理解其中的含义: 其实我们常用的阶数N的意思是: 滤波器的阶数,就是指过滤谐波的次数,一般来讲,同样的滤波器,其阶

Miracle.Zhao的博客 2万+

mybatis的参数 <if test="_parameter != null" > </if>

在类DynamicSqlSource 方法 public BoundSql getBoundSql(Object parameterObject) { DynamicContext context = new DynamicContext(configuration, parameterObject); rootSqlNode.apply(context); Sq

3万+

手把手教你逆向抖店滑块验证码:从抓包到生成captchaBody的完整流程(附Python复现代码)

本文详细解析了抖店滑块验证码的逆向过程,从抓包分析到参数生成,最终用Python完整复现验证流程。涵盖关键接口分析、指纹参数生成、轨迹加密逻辑及核心加密算法实现,帮助开发者突破抖店的多重安全机制,实现高效的人机验证绕过。

weixin_30681121的博客 427

mybatis动态sql中的两个内置参数(_parameter和_databaseId)

mybatis动态sql中的两个内置参数(_parameter和_databaseId) <!--mybatis动态sql的两个内置参数 不只是方法传递过来的参数可以被用来判断,取值 mybatis默认还有两个内置参数 _parameter:代表整个参数 ...

li_jiazhi的博客 640

4、教育数据挖掘:公共数据集与研究进展

本文综述了教育数据挖掘(EDM)领域的研究进展与公共数据集应用情况。从2013年至2020年,EDM在电子学习系统、大规模开放在线课程(MOOC)等方面快速发展,涵盖了多种研究任务、工具与方法。文章梳理了UCI、Mendeley、DataShop等平台的公开数据集,分析了其特点与局限性,并介绍了KDD Cup、Kaggle等竞赛中的教育数据集及其评价指标。同时,探讨了多模态、心理行为等特色数据集的应用场景。最后指出当前EDM面临的主要挑战是缺乏系统性数据集综述、数据预处理复杂及可重复性不足,呼吁加强数据共享

rgv2345678的博客 171

【Unity URP渲染管线下Shader的自定义物体半透明和投影半透明效果_半透明案例分享】

Unity Shader Graph URP渲染管线下的自定义半透明效果_半透明案例分享

暴走约伯的博客 3295

mysql 动态sql 参数_Mybatis-动态SQL-内置参数_databaseId和_parameter

因为数据库版本的不同我们需要写多个SQL,为了简化和提高维护性Mybatis提供了“_databaseId”内置参数来整合SQL以适应不同版本数据库,Mybatis还提供了“_parameter”内置参数_databaseId:数据库版本,其值是在Mybatis全局配置文件中的标签中配置的_parameter:由方法传递过来的参数,可以是任何参数类型,Java会把基本参数类型自动封装成包装类型下面...

weixin_39831902的博客 406

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

Mybatis-动态SQL-内置参数_databaseId和_parameter

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34242819的博客 1460

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Mybatis中_parameter 使用和常用sql

在用自动生成工具生成的mybatis代码中,总是能看到这样的情况,如下代码: <select id="selectByExample" resultMap="BaseResultMap" parameterType="com.juhehl.kapu.pojo.TbCardExample" > select <if test="distinct" > distinct </if> <include...

a898712940的博客 1381

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: springMVC、freemarker页面半自动静态化
下一篇: JPush极光推送Java服务器端实例
女装大佬大老李
博客等级 码龄11年 15粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值