如何在mybatis xml文件中定义局部变量?
2023-06-13 09:16:17 时间
mybatis定义全局变量只需要配置一下即可,那如何在mybatis xml文件中定义局部变量呢?这就需要使用<bind>
标签了。
「bind」标签允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文。通俗来讲它就是声明了一个局部变量,它的优先级是高于其他语句的。
格式:
<bind name="name" value="value"/>
- name:定义的变量名称
- value:value是一个具体的值,它可以是入参,也可以是一个表达式,比如:判断条件
举例
UserInfo实体类
public class UserInfo {
private Long id;
private String gender;
private String name;
private Date createDate;
}
不使用「bind」标签的SQL语句
<select id="bindTest" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from users
<where>
<choose>
<when test="minId != null and minId > 0 and maxId != null and maxId > 0">
and id between #{minId} and #{maxId}
</when>
<otherwise>
<if test="minId != null and minId > 0">
and id >= #{minId}
</if>
</otherwise>
</choose>
<if test="username != null and username.trim() != ''">
and name like concat('%' , #{username} , '%')
</if>
</where>
</select>
测试类
@Test
public void testBind(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserInfoMapper userInfoMapper = sqlSession.getMapper(UserInfoMapper.class);
List<UserInfo> userInfos = userInfoMapper.bindTest(1L , 10L, "0");
System.out.println(userInfos);
}
运行测试类,打印的SQL语句:
sql=select Id, gender , name , create_date from users WHERE id between 1 and 10 and name like concat('%' , '0' , '%')
修改成使用「bind」标签的SQL语句:
<select id="bindTest" resultMap="BaseResultMap">
<bind name="minIdFlag" value="minId != null and minId > 0"/>
<bind name="maxIdFlag" value="maxId != null and maxId > 0"/>
<bind name="usernameLike" value="'%' + username + '%'"/>
select
<include refid="Base_Column_List" />
from users
<where>
<choose>
<when test="minIdFlag and maxIdFlag">
and id between #{minId} and #{maxId}
</when>
<otherwise>
<if test="minIdFlag">
and id >= #{minId}
</if>
</otherwise>
</choose>
<if test="username != null and username.trim() != ''">
and name like #{usernameLike}
</if>
</where>
</select>
运行测试类,打印SQL如下:
sql=select Id, gender , name , create_date from users WHERE id between 1 and 10 and name like '%0%'
对比一下可以发现使用<bind>
标签前后的sql语句都是一样的,也说明<bind>
标签替换成功。
注意事项
- 「bind」标签的value不能为null
- 「bind」标签name最好不要使用点
·
进行赋值操作,如果使用的话直接取值是没问题的, 但是如果在<if>
、<when>
等标签中使用时会报no getter xx
异常。
本篇简单介绍了一下<bind>
标签的使用,希望对你有用。
相关文章
- XML转换_xml文件转化为excel格式
- c语言 自己编程解析 xml,C语言解析.XML文件
- mac文件粉碎机Shredo
- MyBatis——【第二章】mybatis动态sql(分页)
- MyBatis框架:第十章:mybatis缓存
- MyBatis框架:第五章:源码解析及Mapper接口方式的mybatis的增,删,改,查实现
- Python读写LMDB文件「建议收藏」
- MyBatis-Plus联表查询(Mybatis-Plus-Join)
- MyBatis学习总结(七)——Mybatis缓存详解编程语言
- Linux下简单有效的XML文件解析方法(linux解析xml文件)
- MySQL导入XML文件的步骤(mysql导入xml)
- Java数据持久层框架 MyBatis之API学习五(Mapper XML 文件)详解编程语言
- MyBatis实现映射器的2种方式:XML文件形式和注解形式
- 文件Linux 中删除乱码文件的方法(linux删除乱码)
- Oracle数据库存储文件的安全性(oracle存储文件)
- 轻松玩转Linux:修改XML文件的正确打开方式(linux修改xml文件)
- Oracle挖掘文件路径的秘密(oracle读取文件路径)
- MySQL中解析XML文件的方法(mysql解析xml)
- 如何使用MySQL导出XML文件?(mysql导出xml)
- Importing XML files into MySQL: The Complete Guide for Data Integration(xml文件导入mysql)
- 轻松学习:Linux如何修改XML文件(linux修改xml)
- Linux轻松打开XML文件(linux打开xml文件)
- XML文件配置Redis环境指南(xml文件配置redis)
- MySQL数据库如何使用XML文件进行数据存储与交换(mysql xml文件)
- 解除Redis默认文件数量限制(redis默认文件数限制)
- 使用MySQL处理XML文件时如何比较大小(mysql xml 大于)
- 批量文件自动搜索替换插入器Ver2.1
- PHP文件读写操作之文件写入代码
- 怎样打开XML文件?xml文件如何打开?
- .NET调用控制台下生成的exe文件,传参及获取返回参数的思路及代码