mybatis动态sql实现逻辑代码详解

2023-01-05 09:21:19 作者:admin

本文整理自网络,侵删。

目录
  • 1.xml文件读取
  • 2.xml 文件解析

mybatis通过将sql配置xml文件中,通过解析xml动态标签来实现动态sql
如下样例 xml文件

<?xml version = "1.0" ?><!DOCTYPE script SYSTEM "script-1.0.dtd"><script namespace="user">    <common id="commonOrder">        order by id desc    </common>    <sql id="queryUser">        select * from user        <where>            <if test='id != null '>                id = #{id}            </if>            <if test="names != null and names.size() >0">                and name in                <foreach collection="names" item="item" separator="," open="(" close=")">                    ${item}                </foreach>            </if>        </where>        <ref id="commonOrder"/>    </sql>    <sql id="updateUser">        update user set name = ${name}        <where>            <if test='id != null '>                id = #{id}            </if>        </where>    </sql> </script>

1.xml文件读取

xml标签编写规则

<!ELEMENT script (#PCDATA | sql | common)*><!ATTLIST scriptnamespace CDATA #REQUIRED><!ELEMENT sql (#PCDATA | trim | where | set | foreach | choose | if | ref)*><!ATTLIST sqlid CDATA #REQUIRED><!ELEMENT common (#PCDATA | trim | where | set | foreach | choose | if)*><!ATTLIST commonid CDATA #REQUIRED><!ELEMENT ref (#PCDATA)*><!ATTLIST refid CDATA #REQUIRED><!ELEMENT trim (#PCDATA | trim | where | set | foreach | choose | if)*><!ATTLIST trimprefix CDATA #IMPLIEDprefixOverrides CDATA #IMPLIEDsuffix CDATA #IMPLIEDsuffixOverrides CDATA #IMPLIED><!ELEMENT where (#PCDATA | trim | where | set | foreach | choose | if | ref)*><!ELEMENT set (#PCDATA | trim | where | set | foreach | choose | if)*><!ELEMENT foreach (#PCDATA | trim | where | set | foreach | choose | if)*><!ATTLIST foreachcollection CDATA #REQUIREDitem CDATA #IMPLIEDindex CDATA #IMPLIEDopen CDATA #IMPLIEDclose CDATA #IMPLIEDseparator CDATA #IMPLIED><!ELEMENT choose (when* , otherwise?)><!ELEMENT when (#PCDATA | trim | where | set | foreach | choose | if)*><!ATTLIST whentest CDATA #REQUIRED><!ELEMENT otherwise (#PCDATA | trim | where | set | foreach | choose | if)*><!ELEMENT if (#PCDATA | trim | where | set | foreach | choose | if)*><!ATTLIST iftest CDATA #REQUIRED>

DocumentBuilderFactory 是jdk自带的解析xml文件操作,位于 javax.xml.parsers 包,如图其是一个抽象类,因此无法被实例化

阅读剩余部分

相关阅读 >>

php mssql 分页实例

修改表结构的sql语句是什么

navicat导入sql报错怎么解决

sql提取数据库表名及字段名等信息代码示例

详解python 数据库 (sqlite3)应用

怎样用update语句多表关联?

oracle中以insert values的形式同时插入多条记录

navicat怎么恢复sql server的数据库备份

sql注入攻击的原理

mysql数据库条件查询语句的使用方法介绍

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



在线咨询 拨打电话