ibatis浅入

1.SqlMapClient:该类是ibatis的核心类,所有的基于数据库的操作都由该类完成。其实是一个线程安全的SQL Maps客户端,继承了    SqlMapExecutor, SqlMapTransactionManager2个类,封装了数据库的操作和事务处理,可以管理多线程,也可以以单线程的方式运行,一般来说,使用单线程是一种高性能的方式,当被定义为static或singleton时也是安全的。

方法一(自定义方法):SqlMapSession openSession(java.sql.Connection conn),该方法返回一个指定数据库连接的session,如果使用该方式打开看一个session,使用完毕后必须关闭。

方法二(从SqlMapExecutor继承):void startBatch(),int executeBatch(),通过这2个方法实现批处理操作,处理一系列的数据库动作。

方法三(从SqlMapExecutor继承):void queryWithRowHandler(java.lang.String id,java.lang.Object parameterObject,RowHandler rowHandler)throws java.sql.SQLException,该方法对于每个查询结果,调用重载的方法handleRow()再次封装,实现一些额外的功能。该方法适用于大数据量时,避免遍历结果集造成较大性能消耗。

2.指定返回类型的resultMap和resultClass

    这两个属性都适用于对查询结果的存储,区别在于resultClass适用于一般的操作,insert、update、delete、select等,而resultMap适用于嵌套查询和调用存储过程时。原因是由于存储过程相对而言比较封闭(很多情况下需要调用现有

的存储过程,其参数命名和返回的数据字段命名往往不符合Java编程中的命名习惯,

并且由于我们难以通过Select SQL的as子句进行字段名转义,无法使其自动与POJO

中的属性名相匹配)。此时,使用resultMap建立字段名和POJO属性名之间的映射

关系就显得非常有效。另一方面,由于通过resultMap 指定了字段名和字段类型,

ibatis无需再通过JDBC ResultSetMetaData 来动态获取字段信息,在一定程度

上也提升了性能表现。

3.在配置文件中指明参数类型

通过jdbcType和javaType可以指定属性的类型,例如:<result property="id" column="ID" jdbcType="int" javaType="java.lang.Integer"/>;还可以在SQL语句中指明参数类型,比如:update T_USER set name = #name:VARCHAR#, sex = #sex:NUMERIC# where id = #id:NUMERIC#。建议这2种方式都使用。

4.获取不同的返回类型

如已配置: <select id="selectAllUsers" resultClass="user">select id as id, name as name, sex as sex from T_USER</select>

类型一:返回List, sqlmapper.queryForList("User.selectAllUsers")—返回包含所有用户信息的集合;

类型二:返回指定键的Map,sqlmapper.queryForMap("User.selectAllUsers", null, "id")—返回id为键,对象为值的Map;

类型三:返回指定键值的Map,sqlmapper.queryForMap("User.selectAllUsers", null, "id", "name")—返回id为键,name为值的Map;

猜你喜欢

转载自new-restart.iteye.com/blog/1497933