ibatis-一个类中包含List集合配置方式
2014-09-27 09:02
211 查看
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
项目名称: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
相关文章推荐
- SpringXML方式配置bean的集合注入:list,map,properties
- SpringXML方式配置bean的集合注入:list,map,properties
- nginx虚拟主机包含配置方式(也可以一个虚拟主机配置一个单独的文件)
- 【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean
- .分析以下需求,并用代码实现 1.定义List集合,存入多个字符串 2.删除集合元素字符串中包含0-9数字的字符串 只要字符串中包含0-9中的任意一个数字就需
- 利用AJAX为JSP页面传递一个包含了若干对象的List集合
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
- JSTL判断一个list集合里是否包含某个字符串
- 集合框架(一)续 向集合中添加一个集合、数组和List之间的相互转换、从集合中删除另一个集合所包含的元素
- .net 一个集合list 不包含另一个集合listb中的数据
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 利用AJAX为JSP页面传递一个包含了若干对象的List集合
- SpringXML方式配置bean的集合注入:list,map,properties
- hibernate List,Set,Map集合的配置实例
- wcf在IIS里面出现的一个异常(WCF 错误:此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址)
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- 关于【apache- tomcat- 5.5.15/conf /Catalina/localhost配置虚拟目录】时的一些问题。(配置web项目的方式不止一种,虚拟目录就是一个)
- iBatis把一个表的sqlmap配置的多个xml中。
- 关于spring job的一个配置方式
- Hibernate和ibatis在同一个webapp中混合使用在spring中的配置方法