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>
用于测试的数据表展示
查询数据
<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>
更新数据
<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>
删除数据
<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>