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简易使用ibatis简易使用ibatis简易使用
ibatis简单使用的想法 ibatis 是一个成熟的框架,现在已经是改名字叫mybatis了,框架的配置比较烦,如xml,dao的书写,还有每个表还要对应于javabean,没有的话,map 也成,这里希望对其进行简单的简化。
IBatis完成学员的增删改查,无关联关系。
测试iBatis的一个简单java Project,iBatis和mysql的包我都放在了src目录之下,生成数据库的sql文件也在项目之中。
ibatis 使用简单配置
ibatis简单CRUD例子,供新手学习用。
ibatis的简单demo,包含ibatis的所有jar
简单介绍项目中ibatis的使用,包括数据库的配置,ibatis的配置,项目如何使用
ibatis最简单的两个小例子,给刚刚学习ibatis的学友一点帮助
ibatis框架简单应用
简单的Ibatis入门例子,让你踏入Ibatis大门
maven整合ibatis的简单例子
iBatis工程的简单例子,在eclipse上实现的,数据库是mysql数据库,里面的字段为CREATE DATABASE MYDB; use MYDB; Drop TABLE IF EXISTS `MYDB`.`student`; Create TABLE `MYDB`.`student` ( `name` varchar(40) NOT...
Ibatis.net学习例子以及使用教程书,简单易学
最简单的iBatis入门例子
ibatis 一个简单的项目详解及配置,方便初学者更快地了解ibatis
iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点...如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,这是一个ibtis的增删改查例子。
最简单的方式是直接修改NPetshop.Web目录下的dao.config,如下一条语句: ;Data Source=F:\Study\_Net\框架\iBATIS.NET\NPetshop\NPetshop.Web\npetshop.mdb"/> 将其中的路径改成你自己的路径。 PS:npetshop.mdb...