Mybatis中XML的文件SQL语句与动态sql标签(trim|where|set|foreach|if|choose|when|otherwise|bind)

在xml中写sql语句有很多的规范、标准,有时候想要找对应的例子还得翻一翻以前的代码,这里干脆对遇到的情况做个记录。

一,新建XML文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.web"><!-- 命名空间,用来找到对应的xml文件 -->
    
</mapper>
  1. mapper:映射文件的根节点,只有一个属性namespace(命名空间),作用如下 : 用于区分不同的mapper,全局唯一。绑定DAO接口,即面向接口编程,当绑定一个接口,就不用写此接口的实现类,会通过接口的完全限定名找到对应的mapper配置来执行语句,所以,namespace的命名必须要写接口的完全限定名。
  2. cache:配置给定命名空间的缓存。
  3. cache-ref:从其他命名空间引用缓存配置。
  4. resultMap:用来描述数据库结果集和对象的对应关系。
  5. sql:可以重用的块,也可以被其他语句引用。通常时存放一些公用性的。
  6. insert:映射插入语句。update:更新映射语句。delete:删除映射语句。select:映射查询语句。
  7. XML中特殊符号需要转义
&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; 省略号
&quot; " 引号

二,SQL语句

  1. SELECT(if标签,foreach标签)

    <select id="select_b01byb00" parameterType="string" resultType="java.util.LinkedHashMap">
    	SELECT * FROM A WHERE A00 = #{A00}
        <if test="A01 != null and A01 != ''">
            AND
            <foreach collection="A01" item="item" open="(" close=")" separator="or">
                regexp_replace(A.A01,'\s+','') LIKE '%'||regexp_replace(#{item},'\s+','')||'%' 
            </foreach>
        </if>
    </select>
    
    1. id: sql语句的身份证号,parameterType: 参数类型,可以写实体类的路径,resultType: 返回类型。
    2. if test = "": xml中用来判断是否走下面语句的操作。
    3. foreach: 用来拼接循环参数
      • collection: 用来循环的数组或集合
      • item: 集合中的单个元素
      • open: foreach语句开始前拼接的sql
      • close: foreach语句结束后拼接的sql
      • separator: foreach中的语句用什么来连接起来
    4. '\s+': 空格
    5. ||: 合并符
  2. UPDATE(set标签)

    <update id="UpdateTableA"  parameterType="string">
        UPDATE A
       <set>
     		<if test="A01!=null "><!-- <if test="A01!=null and NA64P02!='' ">这样写会导致如果表单填的值为空值,那就不会作为空值传进去 -->
            	A01 = #{A01},
       		</if>
    		<if test="A02!=null">
    			UPDATETIME = SYSDATE,
    		</if>
    		<if test="A03!=null">
    			A03 = #{A03,jdbcType=TIMESTAMP},
    		</if>
    	</set>
        WHERE RECORDID = #{RECORDID}
    </update>
    
    1. SYSDATE: 系统时间
    2. TO_DATE(): 把前台组件传过来的时间转成数据库能识别的Date类型
    3. set: 如果set标签中有值,则会在前面拼接一个set,若没值则不会拼接,自动去掉最后多余的逗号
  3. INSERT(trim标签)

  • 22
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值