`
tntxia
  • 浏览: 1488402 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ibatis入门

 
阅读更多

 

Ibatis是一个很好用的数据库框架。通过XML的配置让你可以系统化你的数据库操作。

 

我这里介绍一个Ibatis的小例子。

 

这里我用我最喜欢H2做为数据库。

 

首先是Config文件:

 

<?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>
	<transactionManager type="JDBC">
	<dataSource type="SIMPLE">
		<property name="JDBC.Driver" value="org.h2.Driver" />
		<property name="JDBC.ConnectionURL" value="jdbc:h2:tcp://localhost:9394/D:\oa_db\oa" />
		<property name="JDBC.Username" value="sa" />
		<property name="JDBC.Password" value="sa" />
	</dataSource>
	</transactionManager>
	
	<sqlMap resource="com/tntxia/test/ibatis/User.xml"/>
	
	
</sqlMapConfig>

 

接下来是Mapping文件:

 

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>

	<select id="getAllUser" resultClass="java.util.HashMap">
		SELECT * FROM username
	</select>

</sqlMap>

 

可见,Ibatis的配置非常的简单,而且明了。

 

接下来,我们再写一段测试的程序来测试一下,是否运行成功。

 

package com.tntxia.dbmanager.sqlmapping;

import java.io.*;
import java.sql.SQLException;
import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class Test {

	/**
	 * @param args
	 * @throws FileNotFoundException 
	 * @throws NodeletException 
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws FileNotFoundException, SQLException {
		
		Reader reader = new FileReader(new File("config.xml"));
		SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader);
		List list = client.queryForList("getAllUser");
		System.out.println(list.size());
		
	}

}

 

结果显示2,说明Ibatis已经把数据库中的信息查询出来了。

 

Ibatis有个不方便的地方,就是他的SQLMap的配置文件是放在Classpath里面的,这里,我们可以自定义一个ConfigParser类,来实现把SQLMap的配置文件放在文件目录上:

 

package com.tntxia.ibatis;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.util.Properties;

import org.w3c.dom.Node;

import com.ibatis.common.xml.Nodelet;
import com.ibatis.common.xml.NodeletUtils;
import com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser;
import com.ibatis.sqlmap.engine.builder.xml.SqlMapParser;

public class MySqlMapConfigParser extends SqlMapConfigParser {
	
	public MySqlMapConfigParser(){
		this.parser.setValidation(false);
	}

	@Override
	protected void addSqlMapNodelets() {
		
		parser.addNodelet("/sqlMapConfig/sqlMap", new Nodelet() {

			public void process(Node node) throws Exception {
				vars.errorCtx.setActivity("loading the SQL Map resource");
				Properties attributes = NodeletUtils.parseAttributes(node,
						vars.properties);
				String filePath = attributes.getProperty("file");

				Reader reader = new FileReader(new File(filePath));
				(new SqlMapParser(vars)).parse(reader);
			}

		});
	}
}

 

这里我们自定义了一个Path的属性,所以我们要改一上config.xml:

 

<?xml version="1.0" encoding="UTF-8"?>
<sqlMapConfig>
	<transactionManager type="JDBC">
	<dataSource type="SIMPLE">
		<property name="JDBC.Driver" value="org.h2.Driver" />
		<property name="JDBC.ConnectionURL" value="jdbc:h2:tcp://localhost:9394/D:\oa_db\oa" />
		<property name="JDBC.Username" value="sa" />
		<property name="JDBC.Password" value="sa" />
	</dataSource>
	</transactionManager>
	<sqlMap file="User.xml"/>
</sqlMapConfig>

 

 这样,我们的User.xml文件可以不放得那么深了。

 

直接放在项目的根目录就行了。

 

 

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics