我是靠谱客的博主 酷炫猎豹,最近开发中收集的这篇文章主要介绍MyBatis数据持久化 SQL复用(可重用的 SQL 代码段),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、修改pom.xml,升级MyBatis版本升级到3.3.0以上版本
2、刷新maven(两种方式)
A. 命令方式
在terminal窗口输入:

mvn clean install -Dmaven.test.skip=true

小注:
clean 移除所有上一次构建生成的文件
install 将包安装至本地仓库,以让其它项目依赖
maven.test.skip 跳过测试

该方式需要先定位到pom.xml所在的文件夹,再执行命令。
这里写图片描述

B. 工具操作方式:
利用idea中的Maven工具来操作,先clean后install
这里写图片描述
AB两种方式,操作完成后,最好刷新一下
这里写图片描述
如果还是不行,删除一下target文件
这里写图片描述
3、代码编写

<sql id="sqlDemo1">
    SELECT * FROM tableA
    <where>
        tableA.code=#{code}
        <if test="city != null and city!= ''">
            AND tableA.city = #{city}
        </if>
    </where>
</sql>
<sql id="sqlDemo2">
    SELECT * FROM tableB
    <where>
        tableB.city IN
        (
        <include refid="sqlDemo1">
            <property name="city" value="${city}"/>
            <property name="code" value="${code}"/>
        </include>
        )
    </where>
</sql>
<select id="getList" parameterType="Map" resultType="Map">
    <include refid="sqlDemo2">
        <property name="city" value="${city}"/>
        <property name="code" value="${code}"/>
    </include>
</select>

该代码主要演示了:sql片段可以嵌套,可以动态传值,但注意在给property的value传值时,只能用$,用#的会导致在sql中取不到值。
上面用的ide是:IntelliJ IDEA 15.0.6
用property的时候idea有可能报错如下,但编译可以通过不影响使用:
这里写图片描述
至于sql片段传递固定值,可以参考以下说明

=================传递固定值=====================
这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如:

<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>

这个 SQL 片段可以被包含在其他语句中,例如:

<select id="selectUsers" resultType="map">
  select
    <include refid="userColumns"><property name="alias" value="t1"/></include>,
    <include refid="userColumns"><property name="alias" value="t2"/></include>
  from some_table t1
    cross join some_table t2
</select>

属性值可以用于包含的refid属性或者包含的字句里面的属性值,例如:

sql id="sometable">
  ${prefix}Table
</sql>

<sql id="someinclude">
  from
    <include refid="${include_target}"/>
</sql>

<select id="select" resultType="map">
  select
    field1, field2, field3
  <include refid="someinclude">
    <property name="prefix" value="Some"/>
    <property name="include_target" value="sometable"/>
  </include>
</select>

小注:传递传递值部分摘自《MyBatis官方文档》,链接地址:
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

作者:jiankunking 出处:http://blog.csdn.net/jiankunking

最后

以上就是酷炫猎豹为你收集整理的MyBatis数据持久化 SQL复用(可重用的 SQL 代码段)的全部内容,希望文章能够帮你解决MyBatis数据持久化 SQL复用(可重用的 SQL 代码段)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部