配置裸Ibatis

     hibernate的裸配置请看:http://liuzl121.iteye.com/blog/1694187

     做项目的时候一般都是ibatis与spring结合起来用的,可是自己要做的例子的话还得用裸的ibatis,这时候突然懵了,不知道怎么获得SqlMapClient,于是上网查找治疗,按照他们的方法自己做了个demo,感觉还挺简单的,在这里记下来,以免以后忘了不知道去哪找。

尊重作者发出参考地址:

     iteye: http://sarin.iteye.com/blog/720321

     百度文库:http://wenku.baidu.com/view/5ac1093c376baf1ffc4fad17.html

 

     Ibatis的主要是对SqlMapConfig.xml的配置,以及对书写sql语句的xml的配置。

发下SqlMapConfig.xml的配置代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<properties resource="com/zl/source/jdbc.properties" />
<!--  报错请将settings中每一行注释去掉	-->
<!--	<settings-->
<!--		cacheModelsEnabled="true"		 是否启用SqlMapClient上的缓存机制。 建议设为"true"  -->
<!--		lazyLoadingEnabled="true"		 是否启用延迟加载机制,建议设为"true"  -->
<!--		enhancementEnabled="true"		 是否针对POJO启用字节码增强机getter/setter的调用效能,避免Reflect所带来的性能开销。同时,这也为Lazy Loading带来提升。 建议设为"true" -->
<!--		errorTracingEnabled="true"		 是否启用错误日志,在开发期间建议设为"true" 以方便调试 -->
<!--		maxRequests="32"		  		 最大并发请求数(Statement并发数 ) 	-->
<!--		maxSessions="10"		  		 最大Session数。即当前最大允许的并发SqlMapClient数。 -->
<!--		maxTransactions="5"		  		 最大并发事务数 	-->
<!--		useStatementNamespaces="true"	 是否启用命名空间 -->
<!--	/>-->
		<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="${jdbc.driverClassName}" />
			<property name="JDBC.ConnectionURL" value="${jdbc.url}" />
			<property name="JDBC.Username" value="${jdbc.username}" />
			<property name="JDBC.Password" value="${jdbc.password}" />
		</dataSource>
	</transactionManager>
	<sqlMap resource="com/zl/source/user.xml" />
</sqlMapConfig>

 

 

 

     JDBC的属性写在jdbc.properties文件中,sqlMap中为写sql的xml文件。

 

user.xml文件代码:

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="user">
	<typeAlias alias="User" type="com.zl.entity.SysUserInfo" />
	<select id="getUser" resultClass="User">
		SELECT USER_NAME AS userName FROM SYS_USER_INFO
	</select>
</sqlMap>

 

 

     typeAlias 是给类起别名,之后的标签中就可以用别名替代冗长的类全名了,在sqlMap中的namespace是在SqlMapConfig.xml中settings中配置useStatementNamespaces为true时,调用getUser时需要加上别名.getUser,例如我这里主函数的查询就应该是:List<SysUserInfo> list = sqlMap.queryForList("user.getUser");
操作标签除了select 还有insert 、update、delete 标签中可以设置返回值类型和参数类型,如果想返回的是一个实体类的话,查询语句AS后面的别名必须要和实体类中对应的变量名称保持一致。

      另外,我在测试的时候用的是SELECT * FROM SYS_USER_INFO发现返回的类中的信息是不全的,不知道为什么。

 

 

下面发下测试类中的代码:

package com.zl.java;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.zl.entity.SysUserInfo;

public class Test {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws IOException, SQLException{
		
		String config = "com/zl/source/SqlMapConfig.xml";
		Reader reader = Resources.getResourceAsReader(config);
		SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		
		List<SysUserInfo> list = sqlMap.queryForList("getUser");
		for (SysUserInfo user : list) {
			System.out.println(user.getUserName());
		}
	}
}

  

 

 

附件中有我做的例子,测试通过的,可以参考 

你可能感兴趣的:(ibatis)