没有合适的资源?快使用搜索试试~ 我知道了~
映射另一种技术跟hibernate稍有不同
资源推荐
资源详情
资源评论
介绍
iBATIS 是以 SQL 为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。
iBATIS 不同于一般的 OR 映射框架。OR 映射框架,将数据库表、字段等映射到类、属性,
那是一种元数据(meta-data)映射。iBATIS 则是将 SQL 查询的参数和结果集映射到类。
所以,iBATIS 做的是 SQL Mapping 的工作。
它把 SQL 语句看成输入以及输出,结果集就是输出,而 where 后面的条件参数则是输入。
iBATIS 能将输入的普通 POJO 对象、Map、XML 等映射到 SQL 的条件参数上,同时也可
以将查询结果映射到普通 POJO 对象(集合)、Map、XML 等上面。
iBATIS 使用 xml 文件来映射这些输入以及输出。
简单示例
基于 ibatis-2.3.0.677 版本。
1、 创建新的项目,并引入 jar 包
a) ibatis-2.3.0.677.jar
b) mysql 驱动
2、 在类路径中提供 ibatis 的配置文件: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>
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL"
value="jdbc:mysql://127.0.0.1/crm"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="mysql"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/bjsxt/crm/model/User.xml"/>
</sqlMapConfig>
3、创建实体类:User.java
package com.bjsxt.crm.model;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
4、创建针对 User 对象的 CRUD 的 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>
<!-- Use type aliases to avoid typing the full classname every
time. -->
<typeAlias alias="User" type="com.bjsxt.crm.model.User"/>
<!-- Select with no parameters using the result map for Account
class. -->
<select id="selectAllUsers" resultClass="User">
select * from t_user
</select>
<select id="selectUser" resultClass="User" parameterClass="int">
select * from t_user where id=#id#
</select>
<insert id="insertUser" parameterClass="User">
insert into t_user values (
null,#username#,#password#
)
</insert>
<update id="updateUser" parameterClass="User">
update t_user set username = #username#,password=#password#
where id=#id#
</update>
<delete id="deleteUser" parameterClass="int">
delete from t_user where id=#id#
</delete>
</sqlMap>
5、创建测试程序测试:
package com.bjsxt.crm.model;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
/**
* 最简单的形式!
* @author Lee
*
*/
public class UserTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
//从配置文件中得到SqlMapClient对象
Reader reader =
Resources.getResourceAsReader("sqlMapConfig.xml");
SqlMapClient sqlMapper =
SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
//创建用户数据
for(int i=0; i<10; i++){
User user = new User();
user.setUsername("用户"+i);
user.setPassword("密码"+i);
sqlMapper.insert("insertUser", user);
}
//查询用户数据
List users = sqlMapper.queryForList("selectAllUsers");
for (Iterator iter = users.iterator(); iter.hasNext();) {
User user = (User) iter.next();
System.out.println(user.getUsername());
}
//查询特定用户的数据
User user = (User)sqlMapper.queryForObject("selectUser", 1);
System.out.println("用户【id="+1+"】的名称
是:"+user.getUsername());
//更新用户的信息
user = new User();
user.setId(3);
user.setUsername("更改之后的用户名称");
user.setPassword("密码被更改");
sqlMapper.update("updateUser", user);
//删除用户的信息
sqlMapper.delete("deleteUser", 6);
}
}
SqlMapClient 对象
这个对象是 iBatis 操作数据库的接口(执行 CRUD 等操作),它也可以执行事务管理等操
作。这个类是我们使用 iBATIS 的最主要的类。它是线程安全的。通常,将它定义为单例。
(与 hibernate 中 sessionFactory 的定义类似)。如:
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class IbatisSQLMapConfig {
private static final SqlMapClient sqlMap;
//在静态区块中初试化返回
static {
try {
//声明配置文件的名称(映射文件被定义在其中)
String resource = "sql_map_config.xml";
//利用工具类 Resources 来读取到配置文件
Reader reader = Resources.getResourceAsReader(resource);
//创建 SqlMapClient 接口的变量实例
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
剩余22页未读,继续阅读
资源评论
wdsjsjl
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功