1.导入jar
使用maven导入
<groupId>com.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.1.0.565</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
2.创建相关配置文件
(1)总体配置文件
<?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"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<!-- 事务管理器 -->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="123" />
</dataSource>
</transactionManager>
<sqlMap resource="com/mycompany/app/SqlMap.xml"/> <!-- 对各SqlMap 文件的引用 -->
</sqlMapConfig>
(2)与数据库表对应的pojo
package com.mycompany.app;
public class Person
{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(3)操作映射文件
<?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="person">
<!-- 使用别名可以避免每次都输入类路径全称 -->
<typeAlias alias="Person" type="com.mycompany.app.Person"/>
<resultMap id="PersonResult" class="Person" >
<result property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<!-- 根据id查询用户信息 -->
<select id="selectPersonById" parameterClass="java.lang.Integer" resultMap="PersonResult">
SELECT * FROM person WHERE ID=#id#
</select>
</sqlMap>
(4)log4j配置文件log4j.properties
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} - %p - %m%n
log4j.rootLogger=INFO, console
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
注意:如果要打印日志,必须在sqlMapConfiguration.xml中useStatementNamespace设置为true
3.测试代码
package com.mycompany.app;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class TestIbatis
{
//用来读取配置文件,并执行数据库操作的对象
private static SqlMapClient sqlClient = null;
static
{
Reader reader = null;
try
{
//从configuration.xml中读取相关配置
reader = Resources.getResourceAsReader("configuration.xml");
sqlClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
try
{
sqlClient.startTransaction();
Person p = (Person) sqlClient.queryForObject("selectPersonById", 1);
System.out.println(p.getId());
System.out.println(p.getName());
sqlClient.commitTransaction();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}