MyBatis 批量操作、添加日志显示、MyBatis与iBatis区别
?
<!-- 设备的批量删除 --><delete id="deleteEquipmentList" parameterType="java.lang.Integer" > delete from dbo.teg_equipment where id in <foreach item="idItem" index="index" collection="list" open="(" separator="," close=")"> #{idItem} </foreach> </delete>
?
/** * @descrption 批量删除 * @author xdwang * @create 2012-11-21下午2:32:52 * @param ids 需要删除的id集合 */void deleteEquipmentList(List<Integer> ids);?
?
<update id="delByUpdateEquipmentList">update dbo.teg_equipment <set > isdeleted = 1 </set> where id in <foreach item="idItem" index="index" collection="list" open="(" separator="," close=")"> #{idItem} </foreach> </update>
?
<insert id="addBatchStudent" useGeneratedKeys="true" parameterType="java.util.List"><selectKey resultType="long" keyProperty="id" order="AFTER">SELECTLAST_INSERT_ID()</selectKey>insert into tbl_student (name,birth,birth) values<foreach collection="list" item="item" index="index" separator="," >(#{item.name},#{item.birth},#{item.birth})</foreach></insert>
?
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="console" value="System.out" /><layout value="%d{MMM dd yyyy HH:mm:ss,SSS} %-5p %c - %m%n" /></layout></appender><category name="net.carefx" additivity="false"><priority value="DEBUG" /><appender-ref ref="console" /></category><category name="org.springframework" additivity="false"><priority value="DEBUG" /><appender-ref ref="console" /></category><category name="org.springframework.orm.ibatis3" additivity="false"><priority value="DEBUG" /><appender-ref ref="console" /></category><category name="org.apache.ibatis" additivity="false"><priority value="DEBUG" /><appender-ref ref="console" /></category><category name="java.sql" additivity="false"><priority value="DEBUG" /><appender-ref ref="console" /></category><logger name="org.apache.ibatis.common.jdbc.SimpleDataSource"><level value="DEBUG" /></logger><logger name="org.apache.ibatis.common.jdbc.SimpleDataSource"><level value="DEBUG" /></logger><logger name="org.apache.ibatis.common.jdbc.ScriptRunner"><level value="DEBUG" /></logger><logger name="org.apache.ibatis.common.jdbc.SqlMapClientDelegate"><level value="DEBUG" /></logger><logger name="java.sql.Connection"><level value="DEBUG" /></logger><logger name="java.sql.Statement"><level value="DEBUG" /></logger><logger name="java.sql.PreparedStatement"><level value="DEBUG" /></logger><logger name="java.sql.ResultSet"><level value="DEBUG" /></logger><root><priority value="DEBUG" /><appender-ref ref="console" /></root></log4j:configuration>
?
· 你执行了一个单独的SQL语句来获取结果列表(就是+1)。
· 对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是N)。
而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。不过实际上这一改进所带来的好处也是很有限的。因为这一方式在使用分页的时候并不起作用,或者说嵌套对象的结果集是不允许进行分页的。这一点在Mybatis框架中已经做出了明确的限制
·熟悉struts2的人应该对OGNL表达式不会感到陌生,MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁。
?
?
?
?