1.创建项目和数据库
项目名称:ibatisdemo2
数据库名:ibatis
表:author
CREATE TABLE `author` (
`id` int(11) DEFAULT NULL,
`name` varchar(30) DEFAULT NULL,
`oid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表:book
CREATE TABLE `book` (
`oid` int(11) DEFAULT NULL,
`name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.添加jar包
--ibaties核心jar 包
ibatis-2.3.3.720.jar
--单元测试包
junit-4.4.jar
--数据库连接驱动包
mysql-connector-java.jar
3.添加配置文件
1.在项目中创建conf目录
2.在conf目录下创建属性文件 SqlMap.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root
3.在conf目录下添加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="SqlMap.properties"/>
<!-- 配置事务 -->
<transactionManager type="JDBC" commitRequired="false">
<!-- 配置数据源 -->
<!--
SIMPLE:
SIMPLE 是ibatis 内置的dataSource 实现,其中实现了一个简单的
数据库连接池机制,对应ibatis 实现类为
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory 。
DBCP:
基于Apache DBCP 连接池组件实现的DataSource 封装,当无容器提
供DataSource 服务时,建议使用该选项,对应ibatis 实现类为
com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory 。
JNDI:
使用J2EE 容器提供的DataSource 实现,DataSource 将通过指定
的JNDI Name 从容器中获取。对应ibatis 实现类为
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFacto
ry。
-->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
</sqlMapConfig>
4.创建实体类与映射文件
1.在src目录下创建包
包名:cn.jbit.domain
2.在包下创建实体类与映射文件
类名:Author.java
public class Author {
private Integer id;//作者编号
private String name;//作者名称
private int oid;//图书编号
//省略get 和 set
}
类名:Book.java
public class Book {
private Integer oid;//图书编号
private String name;//图书名称
private List users;//作者
//省略get 和 set
}
映射文件名:Book.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>
<!-- 图书别名 -->
<typeAlias alias="Book" type="cn.jbit.domain.Book"/>
<!-- 作者别名 -->
<typeAlias alias="Author" type="cn.jbit.domain.Author"/>
<!-- 查询后封装的结果 -->
<resultMap class="Book" id="bookResult">
<result property="oid" column="oid"/>
<result property="name" column="name"/>
<result property="users" column="oid" select="getUsersByBookId"/>
</resultMap>
<!-- 查询图书信息 -->
<select id="selectAllBooks" resultMap="bookResult">
SELECT
oid,
b.name
FROM
book b
</select>
<!-- 根据图书编号查询作者 -->
<select id="getUsersByBookId" parameterClass="int" resultClass="Author">
SELECT
*
FROM
author
WHERE
author.oid=#oid#
</select>
</sqlMap>
3.在核心配置文件SqlMapConfig.xml中添加映射文件引用
<!-- 加载映射文件 -->
<sqlMap resource="cn/jbit/domain/Book.xml"/>
5.测试配置
1.在项目中创建test目录
/test
2.在test目录下创建包
包名:cn.jbit.junit
3.在包下创建测试类
类名:TestJoinSearch.java
public class TestJoinSearch {
private Reader reader;
private SqlMapClient sqlMapClient;
@Test
public void testSearch() throws SQLException{
try {
//加载配置文件
reader = Resources.getResourceAsReader("SqlMapConfig.xml");
//创建SqlMapClient对象配置对象
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
//关闭输入流
reader.close();
//selectAllBooks:配置文件中id名称
List<Book> books = sqlMapClient.queryForList("selectAllBooks");
//获取集合中的第一个元素
System.out.println(books.get(0));
} catch (IOException e) {
e.printStackTrace();
}
}
}
本文出自 “素颜” 博客,请务必保留此出处http://suyanzhu.blog.51cto.com/8050189/1558712
原文地址:http://suyanzhu.blog.51cto.com/8050189/1558712