呵呵,刚才又完成了一个iBatis的Demo程序:)
iBatis的lib一共只有三个。需要其他的设置,可以自己将其他的package给加进去,感觉确实是明快。回想下Hibernate,一堆东西呢。
对刚才做的东西做个小结:)
对于每个实体类,需要设置对该类所的DAO方法。比如我的User.java->User.xml
都非常好理解。
<typeAlias alias="user" type="com.wzg.ibatis.User"/>
<select id="getUserByName" parameterClass="java.lang.String" resultClass="user">
<![CDATA[
select
name,
sex
from t_user
where name = #name#
]]>
</select>
public static User getUserByName(String name) throws SQLException {
return (User) sqlMapper.queryForObject("getUserByName", name);
}
这里parameterClass是指参数的类;resultClass是指返回结果的类。getUserByName是后面sqlMapper.quereyForObject中的第一个参数,代表调用哪个方法,后面的name就是parameterClass所设置的类型,返回结果类型是User类型。
应该说是相当典型的:)
第二个文件是SqlMapConfig.xml文件,这个文件对iBatis的SqlMap进行了配置。具体是什么意思,可以看xiaxin的文档,相当清楚,呵呵,真是要感谢
他的分享。我发现自己已经看了他写的好几分文档了,哈哈。
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
对iBatis的ORM设置,下面是设置事务管理和映射文件。
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/test"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="gg"/>
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from t_user"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/wzg/ibatis/sql/User.xml"/>
有一个问题,在这里怎么回滚事务呢?有下面两个,但是没有rollbackTransaction.
sqlMapper.startTransaction();
sqlMapper.commitTransaction();