1、概念表述
iBatis2是一个轻量级的数据持久化框架,它是一个半自动化的ORMapping工具,数据库的操作依赖程序员自己书写的SQL,因此可以最大限度发挥JDBC的性能。据测试,它的性能和JDBC是一个级别的,但代码比JDBC简单的多,据说相对JDBC节省了60%的代码量。
缺点是映射不灵活,有时候感觉很别扭。当领域对象关系复杂的时候,关联基本上行不通。
2、需要ibatis*.jar
3、在spring容器中整合ibatis
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8</value> </property> <property name="username"> <value>test</value> </property> <property name="password"> <value>test</value> </property> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>classpath:SqlMapConfig.xml</value> </property> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient"> <ref bean="sqlMapClient" /> </property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean>
4、SqlMapConfig.xml 配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <sqlMap resource="com/test/bean/User.xml"/> </sqlMapConfig>
说明:<settings>用于优化SqlMapClient实例的各选项。
5、User.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.test.bean.User"/> <resultMap id="userResult" class="user"> <result property="userId" column="user_id" /> <result property="loginName" column="user_login_name" /> <result property="userName" column="user_name" /> <result property="userPassword" column="user_password" /> </resultMap> <select id="getUserById" parameterClass="java.lang.String" resultMap="userResult"> <![CDATA[ select * from user where userId = #userId# ]]> </select> </sqlMap>
说明:typeAlias 定义了本映射文件中的别名
resultMap是结果集的映射
<select> 为查询语句