SqlFilter

SQLFilter可以在field的etag中配置sql语句。

SQLFilter中可以配置sql更新操作,包括新增INSERT、修改UPDATE、删除DELETE,更新操作必须配置commit操作。

当sql语句为查询语句(SELECT操作)的时候,会将数据库结果集保存在上下文对象中,然后可以通过配置ResultSetFilter进行配置

数据库连接

数据库连接需要先在commons.xml文件下面注册

<connection id="jdbcConnectionTest" class="JdbcConnection" pooled="true">
            <!-- pooled表示是否使用连接池 -->
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <!-- jdbc驱动类路径 -->
            <property name="url" value="jdbc:mysql://192.168.0.110:3306/test?useSSL=false"/>
            <property name="username" value="test"/>
            <property name="xpassword" value="62-EUF4_XGg"/>
            <property name="use_table_user" value="true"/>
            <!-- 连接池属性 -->
            <poolSetting>
                <property name="initialSize" value="5"/><!-- 初始化连接 -->
                <property name="maxIdle" value="50"/><!-- 最大空闲连接 -->
                <property name="minIdle" value="5"/><!-- 最小空闲连接 -->
                <property name="maxActive" value="150"/><!-- 最大连接数量 -->
                <property name="logAbandoned" value="false"/><!-- 标记当Statement或连接被泄露时是否打印程序的stack traces日志 -->
                <property name="removeAbandoned" value="true"/><!-- removeAbandoned: 是否自动回收超时连接 -->
                <property name="removeAbandonedTimeout" value="180"/><!-- removeAbandonedTimeout: 超时时间(以秒数为单位) -->
                <property name="maxWait" value="5000"/><!-- maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于6秒 -->
                <property name="testWhileIdle" value="true"/><!--空闲检测-->
                <property name="validationQuery" value="SELECT 1"/><!--空闲检测查询-->
                <property name="validationQueryTimeout" value="3"/><!--空闲查询超时-->
                <property name="timeBetweenEvictionRunsMillis" value="60000"/><!--空闲检测查询-->
                <property name="numTestsPerEvictionRun" value="5"/><!--每次检测空闲数量-->
                <!--<property name="minEvictableIdleTimeMillis" value="5"/>--><!--空闲判断标志,默认30分钟-->
                <property name="testOnBorrow" value="true"/><!--每次借出链接都要检查,影响性能-->
                <property name="testOnReturn" value="false"/><!--这种验证发生在链接归还时,当间隔很久后再次被借出时,是一个已经失效的链接-->
            </poolSetting>
        </connection>

用于测试的数据表展示

image-20221018140710336

查询数据

<transaction id="2">
            <step id="1">
                <connection ref="jdbcConnectionTest"/>
                <filter ref="sqlFilter" type="in">
                    <field tag="f1" etag="select * from user" type="LST" scope="step"/>
                </filter>
                <log value="结果打印:${f1}"/>
            </step>
</transaction>

输出结果:

 [结果打印:${f1}]=结果打印:[{sex=M, age=20, name=zhangsan, id=1}, {sex=M, age=22, name
=lisi, id=2}, {sex=W, age=18, name=xiaoqi, id=3}, {sex=W, age=19, name=qinjiu, id=4}]

插入数据

<transaction id="3">
            <step id="1">
                <connection ref="jdbcConnectionTest"/>
                <filter ref="sqlFilter" type="in">
                    <field tag="f2" etag="insert into user(id,name,sex,age) values(?,?,?,?)" scope="step">
                        <argument id="1" value="4" type="int" />
                        <argument id ="2" value="田成" type="String" />
                        <argument id ="3" value="M" type="String" />
                        <argument id="4" value="35" type="int" />
                    </field>
                    <field etag="commit"/>
                </filter>
            </step>
</transaction>

image-20221018155615747

image-20221018155712495

更新数据

<transaction id="4">
    <step id="1">
        <connection ref="jdbcConnectionTest"/>
        <filter ref="sqlFilter" type="in">
            <field tag="f2" etag="update user set name='田' where id = ?" scope="step">
                <argument id="1" value="1" type="int" />
            </field>
            <field etag="commit"/>
        </filter>
    </step>
</transaction>

image-20221018160013041

image-20221018160134522

删除数据

<transaction id="5">
    <step id="1">
        <connection ref="jdbcConnectionTest"/>
        <filter ref="sqlFilter" type="in">
            <field tag="f2" etag="delete from user where id = ?" scope="step">
                <argument id="1" value="${1}" />
            </field>
            <field etag="commit"/>
        </filter>
    </step>
</transaction>

image-20221018160756104

image-20221018160808293

results matching ""

    No results matching ""