Ibatis2.x实例
说明:此实例和即将要写的Ibatis3.x实例都是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"> <!-- 定义了ibatis的事务管理器有3中(JDBC,JTA,EXTERNAL) -->
<dataSource type="SIMPLE"> <!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL"
value="jdbc:mysql://localhost/ibatis?useUnicode=true&characterEncoding=UTF-8" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="wuzhengfei" />
</dataSource>
</transactionManager>
<sqlMap resource="com/beans/User.xml" />
</sqlMapConfig>
二、实体类:
2.1、User.java
package com.beans ;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private long id ;
private String username ;
private String password ;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString(){
return "id: "+id+" username: "+username + " password: "+password ;
}
}
2.2映射文件:
<?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="User" type="com.beans.User" />
<select id="findAllUsers" resultClass="User">
select * from User
</select>
<select id="findUserById" resultClass="User" parameterClass="long">
select * from User where id = #id#
</select>
<select id="findUsers" resultClass="User">
select * from User
</select>
<insert id="addUser" parameterClass="User">
insert into User(id,username , password) values(#id#,#username#, #password#)
</insert>
<select id="findUserByName" parameterClass="String" resultClass="User">
select * from User where username like '%$username$%'
</select>
</sqlMap>
三、接口
UserDao.java
package com.dao;
import java.util.List;
import java.util.Map;
import com.beans.User;
public interface UserDao {
public void addUser(User user);
public User deleteUserById(long id);
public List<User> findAllUsers();
public User findUserById(long id);
public User update(User user);
public List<User> findUserByName(String username);
public List<User> findUsers(int start , int maxMount);
public Map<String, Object> findByMap(String key);
}
四、实现类:
UserDaoImpl.java
package com.dao.impl;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.beans.User;
import com.dao.UserDao;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class UserDaoImpl implements UserDao {
private static SqlMapClient sqlMapClient;
static {
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void addUser(User user) {
try {
sqlMapClient.startTransaction() ;
sqlMapClient.insert("addUser", user);
sqlMapClient.commitTransaction() ;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
sqlMapClient.endTransaction() ;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public User deleteUserById(long id) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<User> findAllUsers(){
List<User> users = new ArrayList<User>();
try {
users = sqlMapClient.queryForList("findAllUsers");
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
@Override
public User findUserById(long id) {
User user = new User();
try {
user = (User) sqlMapClient.queryForObject("findUserById", id);
} catch (SQLException e) {
e.printStackTrace();
}
return user ;
}
@Override
public User update(User user) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<User> findUserByName(String username) {
List<User> users = new ArrayList<User>();
try {
users = (List<User>) sqlMapClient.queryForList("findUserByName", username);
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
@Override
public List<User> findUsers(int start , int maxMount) {
List<User> users = new ArrayList<User>() ;
try{
sqlMapClient.startTransaction();
users = sqlMapClient.queryForList ("findUsers", null, start, maxMount);
sqlMapClient.commitTransaction();
}catch (Exception e) {
e.printStackTrace() ;
}
return users;
}
@Override
public Map<String, Object> findByMap(String key) {
Map<String, Object> map = new HashMap<String, Object>();
try{
map = sqlMapClient.queryForMap("findUsers", null, key);
}catch (Exception e) {
e.printStackTrace() ;
}
return map;
}
public static SqlMapClient getSqlMapClient() {
return sqlMapClient;
}
public static void setSqlMapClient(SqlMapClient sqlMapClient) {
UserDaoImpl.sqlMapClient = sqlMapClient;
}
}
五、测试类:
UserDaoImplTester.java
package com.dao.impl;
import static org.junit.Assert.fail;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import com.beans.User;
import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;
public class UserDaoImplTester {
private UserDao userDao ;
@Before
public void setUp() throws Exception {
userDao = new UserDaoImpl();
}
@Test
public void testAddUser() {
User user = new User();
user.setId(20);
user.setPassword("XXXX");
user.setUsername("XXXX");
userDao.addUser(user);
}
@Test
public void testFindUsers() {
List<User> users = userDao.findUsers(3,10) ;
for(User user : users){
System.out.println(user.toString());
}
}
@Test
public void testFindByMap() {
Map<String, Object> map = userDao.findByMap("id") ;
Iterator<String> it = map.keySet().iterator() ;
while(it.hasNext()){
User user = (User) map.get(it.next()) ;
System.out.println(user);
}
}
@Test
public void testDeleteUserById() {
fail("Not yet implemented");
}
@Test
public void testFindAllUsers() {
fail("Not yet implemented");
}
@Test
public void testFindUserById() {
fail("Not yet implemented");
}
@Test
public void testUpdate() {
fail("Not yet implemented");
}
@Test
public void testFindUserByName() {
fail("Not yet implemented");
}
}
此时实例是一个简单的Ibatis2.x运用,深入学习请参考相关文档。附件中是我找到的一些Ibatis2.x的资料,大家分享。
分享到:
相关推荐
Java之iBatis 2.3.x是一个关于Java应用程序中持久层框架的讲解,主要讨论了对象关系映射(ORM)工具的选择以及iBatis的特点和使用方法。iBatis作为一个轻量级的ORM框架,提供了更加灵活的SQL定制能力,使得开发人员...
4. slf4j-api-x.x.x.jar和slf4j-log4j12-x.x.x.jar:SLF4J(Simple Logging Facade for Java)接口,Ibatis推荐使用它作为日志框架的抽象层。 5. guava-x.x.x.jar:Google的Guava库,提供了许多实用工具类,Ibatis...
Struts2、iBatis和Spring 2.x是经典的Java Web开发框架组合,它们共同构建了一个灵活、可扩展且易于管理的应用程序架构。这个入门实例是针对初学者设计的,旨在帮助理解这三个框架如何协同工作。 **Struts2** 是一...
然而,对于新的项目,可能需要考虑升级到Ibatis的最新版本(目前是3.x),以利用其更丰富的特性,如注解支持、更好的类型处理等。 总的来说,Ibatis 2.3.4的实例和jar包为你提供了一个学习和实践的平台,通过深入...
1. **Ibatis框架**:下载并引入Ibatis的jar包到项目中,通常会包括`ibatis-3.x.x.jar`,以及其依赖的`slf4j-api-1.x.x.jar`和`log4j-1.x.x.jar`。 2. **MySQL JDBC驱动**:引入MySQL的JDBC驱动,如`mysql-connector-...
【Ibatis实例,手把手教你入门】 Ibatis,一个轻量级的Java持久层框架,以其灵活、简单的特点,被广泛应用于各种项目中。本文将引导你从零开始,逐步了解并掌握Ibatis的基本用法,包括配置环境、创建数据表、编写...
SQLMapClient则是iBATIS 2.x版本中的一个API,用于执行SQL语句和操作数据库。文档中“***updateinsertupdatedelete52select.52select.52Listselect52”暗示了通过这些API可以执行如update, insert, update, delete, ...
这份文档详细介绍了iBATIS 2.x版本的配置、SQL映射文件的编写、动态SQL的使用,以及如何在Java代码中调用这些功能。 六、iBATIS-SqlMaps-2-Tutorial_cn.pdf 这是iBATIS 2.x的中文教程,适合初学者学习。内容包括...
2. `mybatis-compiler-x.x.x.jar`:这个jar包主要用于代码生成器,它是Ibatis的一个辅助工具,可以帮助开发者自动生成DAO层的Java代码,根据数据库表结构自动创建对应的Mapper接口和实现类,减轻了手动编写这些代码...
在Java项目中,引入Ibatis框架的关键库包括`ibatis-3.x.x.jar`(主要的Ibatis核心库)、`slf4j-api-1.7.x.jar`(日志API)和`log4j-1.2.x.jar`(具体日志实现)。同时,如果你打算集成Struts和Spring,还需要它们的...
在本项目中,"springboot+mysql+ibatis完整整合案例"是一个针对初学者的教程,旨在演示如何将Spring Boot、MySQL数据库和MyBatis框架有效地集成在一起,创建一个可运行的应用程序。以下是对这些技术及其整合过程的...
1. **引入依赖**: 在项目中引入Ibatis的jar包,包括核心库mybatis-x.x.x.jar和相关数据库驱动。 2. **配置SqlMapConfig.xml**: 配置数据源、事务管理器等,例如使用JDBC数据源,配置如下: ```xml ...
5. **Mapper接口**:在iBATIS 2.x版本中,通过SqlMapClient调用SQL Map文件;而在3.x版本中,更推荐使用Mapper接口的方式。教程会讲解如何创建和使用Mapper接口,以及如何将接口方法与XML中的SQL语句关联起来。 6. ...
在`Ibatis_home`文件中,可能包含了所需的jar包,例如`ibatis-3.x.x.jar`、`log4j.jar`等。这些jar包是运行Ibatis的基础,需要将它们添加到项目的类路径中。 3. **SqlMapConfig.xml配置** 这是Ibatis的核心配置...
2. `iBATIS-SqlMaps-2-Tutorial_cn.pdf`:这个可能是iBATIS 2.x的中文教程,提供一步一步的指导,帮助读者从零开始学习如何使用iBATIS。它可能会涵盖基本的安装步骤、实例演示、常见问题解答等,帮助读者快速上手。 ...
在开始Ibatis实例之前,确保你的开发环境中已经安装了Java运行环境(JDK)和Maven或Gradle构建工具。Ibatis通常作为依赖库通过这些工具引入到项目中。 2. **项目集成**: 创建一个新的Java项目,然后在`pom.xml`...
2. Mapper接口:在iBATIS 2.x版本中,主要通过SqlMapClient来执行SQL Maps;而在3.x版本中,引入了Mapper接口,使编程更加面向接口,提高了可读性和可维护性。 二、iBATIS的工作原理 1. 数据库操作的抽象:iBATIS...
### ibatis:一种“半自动化”的ORM解决方案 ibatis,作为一种“半自动化”的ORM(Object-Relational Mapping,对象关系映射)框架,不同于Hibernate和Apache OJB等提供全面数据库封装的“一站式”ORM解决方案,它...
2. **SqlMapClientFactoryBean**:用于配置和创建SqlMapClient实例。 3. **SqlMapClientTemplate**:提供了一个非侵入式的访问IBatis的方式,可以用于执行SQL语句并处理结果集。 4. **SqlMapClientDaoSupport**:...