IBATIS,mybatis的前身,这次项目中用到了,就做个总结:
一、jar包:
ibatis-2.3.4.726.jar
mysql-connector-java-5.1.12.jar
log4j-1.2.17.jar
common-logging-1.jar
二、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="jdbc.properties" /> <!-- 数据库资源文件 --> <settings cacheModelsEnabled ="true" lazyLoadingEnabled="true" enhancementEnabled="true" errorTracingEnabled="true" maxRequests="10" maxSessions="10" maxTransactions="3" useStatementNamespaces="true" /> <!-- cacheModelsEnabled:启用缓存机制 lazyLoadingEnabled:启用懒加载机制 enhancementEnabled:启用字节码增强机制 errorTracingEnabled:启用错误处理机制 maxRequests:最大并发请求数 maxSessions:最大并发session数 useStatementNamespaces:开启命名空间 --> <transactionManager type="JDBC" commitRequired="false" ><!--定义了ibatis的事务管理器,3中(JDBC,JTA,EXTERNAL) --> <dataSource type="SIMPLE" ><!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) --> <property name="JDBC.Driver" value="${driver}"/> <property name="JDBC.ConnectionURL" value="${url}"/> <property name="JDBC.Username" value="${username}"/> <property name="JDBC.Password" value="${password}"/> <property name ="Pool.MaximumActiveConnections" value ="15" /> <!-- 连接池维持的最大容量 --> <property name ="Pool.MaximumIdleConnections" value ="10" /> <!-- 连接池允许挂起的最大连接 --> <property name ="Pool.MaximumCheckoutTime" value ="120000" /> <!-- 连接被某个任务所允许占用的最大时间 --> <property name ="TimeToWait" value ="500" /> <!-- 线程允许等待的最大时间 --> </dataSource> </transactionManager> <sqlMap resource="com/xxx/ibatisdemo/model/User.xml" /> </sqlMapConfig>
三、User类
package com.xxx.ibatisdemo.model; public class User { private int id; private String username; private String userPwd; private String userTel; private String userEmail; public User() { } public User(int id, String username, String userPwd) { this.username = username; this.userPwd = userPwd; } public User(String username, String userPwd, String userTel,String userEmail) { this.username = username; this.userPwd = userPwd; this.userTel = userTel; this.userEmail = userEmail; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } public String getUserTel() { return userTel; } public void setUserTel(String userTel) { this.userTel = userTel; } public String getUserEmail() { return userEmail; } public void setUserEmail(String userEmail) { this.userEmail = userEmail; } }
四、User.xml :对User的具体操作定义在这里
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL MAP 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="userSqlMap" > <!-- namespace:相同命名空间下 id 不可重复,不同命名空间可重复 --> <typeAlias alias="User" type="com.xxx.ibatisdemo.model.User"/> <resultMap class="User" id="userResultMap"> <result property="id" column="id" /> <result property="username" column="user_name"/> <result property="userPwd" column="user_pwd"/> <result property="userTel" column="user_tel"/> <result property="userEmail" column="user_email"/> </resultMap> <!-- 分页查询数据头文件 --> <sql id="queryHeader"> select * from (select innerresult.*, rownum innerindex from ( </sql> <!-- 分页查询数据尾文件 --> <sql id="queryFooter"> <![CDATA[ ) innerresult) where innerindex > #start# and innerindex <= #end# ]]> </sql> <insert id="addUser" parameterClass="User" > <!-- oracle sequence <selectKey keyProperty="id" resultClass="int"> SELECT SEQ_ALARM_OVERLOAN.nextval as id FROM dual </selectKey> --> insert into t_user ( id <dynamic> <isNotEmpty prepend="," property="username" >user_name</isNotEmpty> <isNotEmpty prepend="," property="userPwd" >user_pwd</isNotEmpty> <isNotEmpty prepend="," property="userTel" >user_tel</isNotEmpty> <isNotEmpty prepend="," property="userEmail" >user_email</isNotEmpty> </dynamic> ) VALUES( #id# <dynamic> <isNotEmpty prepend="," property="username" >#username#</isNotEmpty> <isNotEmpty prepend="," property="userPwd" >#userPwd#</isNotEmpty> <isNotEmpty prepend="," property="userTel" >#userTel#</isNotEmpty> <isNotEmpty prepend="," property="userEmail">#userEmail#</isNotEmpty> </dynamic> ) </insert> <delete id="deleteUserById" parameterClass="int" > DELETE FROM t_user WHERE id = #id# </delete> <update id="updateUser" parameterClass="User" > <![CDATA[ UPDATE t_user]]> <dynamic prepend="SET"> <isNotEmpty prepend="," property="username"> <![CDATA[user_name=#username#]]> </isNotEmpty> <isNotEmpty prepend="," property="userPwd"> <![CDATA[user_pwd=#userPwd#]]> </isNotEmpty> <isNotEmpty prepend="," property="userTel"> <![CDATA[user_tel=#userTel#]]> </isNotEmpty> <isNotEmpty prepend="," property="userEmail"> <![CDATA[user_email=#userEmail#]]> </isNotEmpty> </dynamic> <![CDATA[ WHERE id = #id# ]]> </update> <select id="findUserById" parameterClass="int" resultClass="User" > select t.id as id, t.user_name as username, t.user_pwd as userPwd, t.user_tel as userTel, t.user_email as userEmail from t_user t where t.id=#id# </select> <select id="findUserList" resultClass="User" resultMap="userResultMap" > select * from t_user t </select> </sqlMap>
五、UserDaoImpl:
package com.xxx.ibatisdemo.dao.impl; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.xxx.ibatisdemo.dao.IUserDao; import com.xxx.ibatisdemo.model.User; import com.xxx.ibatisdemo.util.Page; public class UserDao implements IUserDao { private static SqlMapClient sqlMapClient = null; 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.insert("userSqlMap.addUser", user); } catch (SQLException e) { e.printStackTrace(); } } @Override public void deleteUserByID(int id) { try { sqlMapClient.delete("userSqlMap.deleteUserById", id); } catch (SQLException e) { e.printStackTrace(); } } @Override public void updateUser(User user) { try { sqlMapClient.update("userSqlMap.updateUser", user); } catch (SQLException e) { e.printStackTrace(); } } @Override public User findUserById(int id) { User user=null; try { user = (User) sqlMapClient.queryForObject("userSqlMap.findUserById", id); } catch (SQLException e) { e.printStackTrace(); } return user; } @SuppressWarnings("unchecked") @Override public List<User> findUserlist() { List<User> userList = null; try { userList = sqlMapClient.queryForList("userSqlMap.findUserList"); } catch (SQLException e) { e.printStackTrace(); } return userList; } }
六、测试类:
package test; import java.util.List; import org.junit.Test; import com.xxx.ibatisdemo.dao.impl.UserDao; import com.xxx.ibatisdemo.model.User; public class TestIbatis { @Test public void testIbatisInsert(){ UserDao dao = new UserDao(); User user = new User("eee","123","123123","eee@m.com"); user.setId(4); dao.addUser(user); } @Test public void testDeleteUser(){ UserDao dao = new UserDao(); dao.deleteUserByID(3); } @Test public void testFindUserById(){ UserDao dao = new UserDao(); User user = dao.findUserById(1); System.out.println(user.getId()); System.out.println(user.getUsername()); System.out.println(user.getUserPwd()); System.out.println(user.getUserTel()); System.out.println(user.getUserEmail()); } @Test public void testUpdateUser(){ UserDao dao = new UserDao(); User user = new User("fff","123","ffffff","fff@m.com"); user.setId(5); dao.updateUser(user); } @Test public void testListUser(){ UserDao dao = new UserDao(); List<User> userList = dao.findUserlist(); System.out.println("userList size:"+userList.size()); for (User u : userList) { System.out.println(u.getId()+"-"+u.getUsername()+"-"+u.getUserPwd()+"-"+u.getUserTel()+"-"+u.getUserEmail()); } } }
附:项目结构
一个小小的demo,实现了User的增删改查
相关推荐
以下是对iBATIS简易使用的详细解释: 1. **环境准备**: - **jar文件**:iBATIS框架运行需要依赖一些库文件,包括`log4j`用于日志记录,`ibatis`核心库,以及`jdbc`驱动,这些都需要添加到项目的类路径中。 - **...
ibatis简单使用的想法 ibatis 是一个成熟的框架,现在已经是改名字叫mybatis了,框架的配置比较烦,如xml,dao的书写,还有每个表还要对应于javabean,没有的话,map 也成,这里希望对其进行简单的简化。
4. **事务管理**: IBatis提供了简单的事务控制,可以通过编程方式或者配置方式来管理事务的提交、回滚等操作。 5. **缓存机制**: 内置的缓存机制可以提高数据访问效率,减少对数据库的频繁访问。 **使用步骤** 1....
要开始使用 Ibatis,首先需要从官方网站下载最新版本的 ibatis jar 包,以及 log4j 日志框架的 jar 包。然后,在Java项目中添加这些库,配置log4j.properties以开启SQL日志输出。接着,新建主配置文件sqlMapConfig....
SQL Maps是iBATIS的核心部分,它们将数据库查询与Java对象绑定,使得数据库操作变得简单直观。 《iBATIS-DAO-2.pdf》可能涉及到了Data Access Object(DAO)模式的实现和iBATIS的结合。DAO模式是一种设计模式,用于...
在这个“使用的iBatis简单例子”中,我们将深入探讨如何配置和使用iBatis进行数据库交互。 首先,iBatis的核心组件包括XML配置文件、SQL映射文件以及SqlSessionFactory。XML配置文件用于定义数据源、事务管理器等...
入门教程通常从简单的Hello World示例开始,逐步引导读者了解如何创建和配置iBatis项目,编写第一条SQL,处理查询结果,以及如何进行异常处理。同时,还会讲解如何在实际项目中结合Spring等框架进行集成使用。 **...
Ibatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 **Ibatis的主要特点** 1. **简洁的API设计**:Ibatis提供了简单易用的...
通过 DAO,开发者可以使用简单的接口来操作数据,而无需关心底层的 SQL 实现。 **二、Ibatis 的使用准备** 在开始使用 Ibatis.Net 之前,你需要进行以下步骤: 1. **下载软件包**:从官方网站...
一个简单的Ibatis查询操作示例: 1. 定义Mapper XML文件,包含一个查询所有用户信息的SQL语句: ```xml SELECT * FROM users ``` 2. 创建对应的DAO接口: ```java public interface UserMapper { List<User> ...
这个"ibatis简单例子"旨在帮助初学者理解Ibatis的基本用法,包括配置文件的设置、SQL映射文件的编写以及如何在Java代码中调用这些映射的SQL。通过实践这两个小例子,可以深入理解Ibatis如何将数据库操作与业务逻辑...
### ibatis 使用简单配置 #### 一、简介 在本文档中,我们将详细介绍如何通过简单的配置来使用ibatis(现在通常被称为MyBatis),并提供一个具体的示例来帮助理解整个配置过程及其应用场景。 #### 二、ibatis简介...
- 这是最简单的缓存实现方式,使用引用计数来管理缓存项。当一个缓存项的引用计数为零时,该项就会被移除。 - MEMORY缓存不支持统一的失效策略,适合对内存使用没有严格限制的场景。 2. **LRU ...
下面我们将详细探讨如何将Maven与iBatis整合,以实现一个简单的例子。 首先,我们需要创建一个新的Maven项目。在Maven的`pom.xml`文件中,我们需要添加iBatis和其依赖的数据库驱动(如MySQL驱动)作为项目的依赖。...
在iBatis的简易教程中,我们将通过三个例子来逐步理解如何配置和使用iBatis。首先,我们需要创建数据库和对应的表。在本例中,我们使用MySQL 5.0,并创建了一个名为`contact`的表,包含`contactid`、`firstName`、`...
以上就是一个简单的Ibatis入门例子,展示了如何使用Ibatis进行数据库查询。实际上,Ibatis还支持动态SQL、结果映射、参数映射等多种高级特性,可以实现更复杂的业务逻辑。例如,你可以通过使用`<if>`、`<choose>`等...
**Ibatis简单实例** 在"IbatisTest"这个简单实例中,我们通常会经历以下步骤: 1. **引入依赖**: 在项目中引入Ibatis的jar包,包括核心库mybatis-x.x.x.jar和相关数据库驱动。 2. **配置SqlMapConfig.xml**: 配置...
ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、ParameterHandler ParameterHandler负责设置PreparedStatement的参数。`org.apache.ibatis.executor.parameter.ParameterHandler`...
Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心概念和常用功能,帮助你快速...