ibatis 也算是久仰大名 不过一直没有时间尝试,最近听说已经脱离apache开始另立门户了。
这里采用的myeclipse 6.5中带的ibatis2 不过目前最新版本是3。
首先采用mysql 建立一个数据库 ibatis 创建表 users 里面字段 id 自增 u_name u_email
ibatis 配置文件 和hibernate的很类似
sql-map-config.xml
<?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/ibatis?characterEncoding=UTF-8" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="" />
</dataSource>
</transactionManager>
<sqlMap resource="com/test/ibatis/hello/User.xml" />
</sqlMapConfig>
实体Bean 就是一个javaBean User.java
public class User {
private int id;
private String name;
private String email;
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
实体bean的映射文件 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 namespace="t_user">
<typeAlias alias="userVO" type="com.test.ibatis.hello.User"/>
<insert id="createUser" parameterClass="userVO">
insert into users(u_name,u_email)
values(#name#,#email#)
</insert>
<resultMap class="userVO" id="GetUser">
<result property="id" column="id"/>
<result property="name" column="u_name"/>
<result property="email" column="u_email"/>
</resultMap>
<select id="getUser" parameterClass="java.lang.String" resultMap="GetUser">
select * from users where u_name = #value#
</select>
<update id="updateUser" parameterClass="userVO">
update users set u_name=#name# where id=#id#
</update>
<delete id="deleteUser" parameterClass="int">
delete from users where id=#value#
</delete>
</sqlMap>
这里已经通过标签定义了 crud方法
Reader reader = Resources.getResourceAsReader("sql-map-config.xml");
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
User user = new User();
user.setName("找老吴");
user.setEmail("test@9ui.com");
sqlMap.insert("createUser", user);
User user = (User)sqlMap.queryForObject("getUser", "找老吴");
User user = new User();
user.setId(9);
user.setName("aaa");
sqlMap.update("updateUser", user);
使用上很简单 一看就懂
这里对实体映射配置的说明
查询字段处理
1 实体字段与数据库字段相同 不需要特别映射 实体属性名==字段名
2 实体字段与数据库字段不同(Map映射 ,字段别名映射)
这里采用的是Map映射 如果数据库表和实体VO的属性不是同名,需要手动建立映射关系
当然也可以采用字段别名映射 不过此种方式并不推荐
<!-- 我们可以通过sql语句讲返回结果的字段于VO相对应,这样可以不用另外创建映射 不推荐 -->
<!--
<select id="getUser" parameterClass="java.lang.String" resultClass="userVO">
select id as id,u_name as name,u_email as email from users where u_name = #value#
</select>
主键的处理 这里我们采用的是mysql的自增类型 所以不用处理,下面的例子是针对oracle序列的方式 以此类推
<insert id="createUser" parameterClass="userVO">
<selectKey resultClass="int" type="pre" keyProperty="id">
select test_seq.nextval from dual
</selectKey>
insert into users(id,u_name,u_email) values
(#id#,#name#,#email#)
</insert>
类别名的配置<typeAlias/> 简化书写
否则我们就要些类全名 如:parameterClass="xxx.xxx.xxx.Claz"
转义文本块
CDATA 比如在sql语句中存在 < >等 xml不能处理的字符的时候
select * from t_user <![CDATA[ where tid>#value# ]]>
sql标签
在配置文件中有多处相同部分的sql信息
<sql id="select_user">
select * from users
</sql>
查询语句的sql 中 加入include 标签
<select id="getUser" parameterClass="java.lang.String" resultMap="GetUser">
<include refin="select_user"/> where u_name = #value#
</select>
我也是初次了解 不正确的地方还请指出
分享到:
相关推荐
**iBatis入门** iBatis 是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,从而避免了Java代码与数据库之间的繁杂交互。它结合了Java的灵活性和SQL的高效查询能力,使得开发更加便捷。本篇文章将...
【Ibatis实例,手把手教你入门】 Ibatis,一个轻量级的Java持久层框架,以其灵活、...同时,随着Ibatis 3.x版本的发布,它引入了许多新功能和改进,比如支持注解配置,你可以尝试升级到新版本,进一步提升开发效率。
【标题】"ibatis经典入门"揭示了我们即将探讨的主题——如何入门并掌握iBATIS这一数据层框架。...记得,理论与实践相结合是学习的关键,阅读文档后,一定要动手尝试,这样才能真正掌握iBATIS的精髓。
【Ibatis相关指南】 ... - 结合Spring:如果可能,尝试在Spring框架中整合Ibatis,体验其事务管理的便利性。 通过以上内容,你将能更好地理解和掌握Ibatis,从而在实际项目中更加游刃有余地进行数据访问操作。
9. **插件体系**:Struts2具有丰富的插件库,如Freemarker、Velocity视图技术,Hibernate、iBatis持久层框架等,可以无缝集成,扩展框架功能。 10. **Ajax支持**:Struts2提供了Ajax插件,使开发者能够轻松实现页面...
作者通过自己的F#探险之旅,整理了相关教程,帮助初学者快速入门,并对比了F#与C#的差异,强调了函数式编程的优势。 【Visual Studio插件增强开发体验】 Visual Studio的插件生态系统极大地丰富了IDE的功能,使...
在这个入门示例中,我们将探讨如何使用`Association`进行复杂类型的映射,以及如何在查询结果中嵌入这些关联对象。 首先,`Association`是用来表示对象间的关联,比如在一个实体类中包含另一个实体类的属性。在这个...
在模型层,Struts2可以无缝集成各种持久化框架,如Hibernate、iBatis等,实现数据库操作。同时,Struts2支持Ajax,通过JSON或者XML响应,实现页面的部分刷新,提升用户体验。 此外,Struts2还具有异常处理、国际化...
- **起源与发展**:MyBatis起源于Apache的一个开源项目iBatis,在2010年由Apache Software Foundation迁移到Google Code,并更名为MyBatis。2013年11月,该项目进一步迁移到GitHub上进行维护和发展。 - **定位与优势...
Spring 2.0仅支持iBATIS 2版本,当尝试将MyBatis 3的支持加入到Spring 3.0时(参见Spring Jira问题),不幸的是,由于MyBatis 3.0正式发布前Spring 3.0的开发周期已结束。为了避免基于未发布的MyBatis版本进行代码...