一、添加jar包:
ibatis-2.3.0.677.jar
mysql-connector-java-5.1.22-bin.jar
二、工程目录:
三、代码
SqlMap.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ibaits
username=root
password=123
User.ibt.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="User">
<!-- Use type aliases to avoid typing the full classname every time. -->
<typeAlias alias="user" type="com.wq.vo.User" />
<insert id="insertUserByVO" parameterClass="user">
INSERT INTO USER(NAME,AGE)
VALUES(#name#,#age#)
</insert>
<select id="selectUser" parameterClass="java.lang.String" resultClass="user">
SELECT ID,NAME,AGE
FROM USER
WHERE NAME = #name#
</select>
<update id="updateUserByVO" parameterClass="user">
UPDATE USER SET
NAME=#name#,
AGE=#age#
WHERE ID=#id#
</update>
<delete id="deleteUser" parameterClass="int">
DELETE FROM USER WHERE ID=#id#
</delete>
</sqlMap>
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="com/wq/ibaitsXml/SqlMap.properties" />
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}?autoReconnect=true&useUnicode=true&characterEncoding=utf8" />
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
<property name="JDBC.DefaultAutoCommit" value="false" />
<property name="Pool.PingEnabled" value="true"/>
<property name="Pool.PingQuery" value="select 1"/>
<property name="Pool.PingConnectionsOlderThan" value="50000"/>
<property name="Pool.PingConnectionsNotUsedFor" value="50000"/>
<property name="Pool.MaximumActiveConnections" value="20"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
</dataSource>
</transactionManager>
<!-- List the SQL Map XML files. They can be loaded from the
classpath, as they are here (com.domain.data...) -->
<sqlMap resource="com/wq/ibaitsXml/User.ibt.xml"/>
</sqlMapConfig>
IbaitsUtil.java
package com.wq.ibaits;
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;
/**
* Ibaits常用方法.
*
* @author qingwu
*
*/
public class IbaitsUtil {
public static final String SQL_MAP_CONFIG = "com/wq/ibaitsXml/SqlMapConfig.xml";
private static SqlMapClient sqlMap;
static {
Reader reader = null;
try {
// ibatis SQLMap
reader = Resources.getResourceAsReader(SQL_MAP_CONFIG);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static SqlMapClient getSqlMap() {
return sqlMap;
}
public static void setSqlMap(SqlMapClient sqlMap) {
IbaitsUtil.sqlMap = sqlMap;
}
public static String getSqlMapConfig() {
return SQL_MAP_CONFIG;
}
/**
* 插入.
*
* @param obj
* @param flag
* @return
*/
public static boolean insert(Object obj, String flag) {
SqlMapClient sqlMap = IbaitsUtil.getSqlMap();
try {
sqlMap.startTransaction();
sqlMap.insert(flag, obj);
sqlMap.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return true;
}
/**
* 更新.
*
* @param obj
* @param flag
* @return
*/
public static boolean update(Object obj, String flag) {
SqlMapClient sqlMap = IbaitsUtil.getSqlMap();
try {
sqlMap.startTransaction();
sqlMap.update(flag, obj);
sqlMap.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return true;
}
/**
* 删除.
*
* @param obj
* @param flag
* @return
*/
public static boolean delete(Object obj, String flag) {
SqlMapClient sqlMap = IbaitsUtil.getSqlMap();
try {
sqlMap.startTransaction();
sqlMap.delete(flag, obj);
sqlMap.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return true;
}
/**
* 查找.
* @param obj
* @param flag
* @return 一个对象
*/
public static Object queryForObject(Object obj,String flag){
SqlMapClient sqlMap = IbaitsUtil.getSqlMap();
Object retObj = null;
try {
sqlMap.startTransaction();
retObj = sqlMap.queryForObject(flag, obj);
sqlMap.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return retObj;
}
/**
* 查找.
* @param obj
* @param flag
* @return 一个列表
*/
@SuppressWarnings("rawtypes")
public static List queryForList(Object obj,String flag){
SqlMapClient sqlMap = IbaitsUtil.getSqlMap();
List list = null;
try {
sqlMap.startTransaction();
list = sqlMap.queryForList(flag, obj);
sqlMap.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
}
User.java
package com.wq.vo;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = -2367576295366183847L;
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
UserDao.java
package com.wq.dao;
import java.util.List;
import com.wq.vo.User;
/**
* 用户操作DAO.
* @author qingwu
*
*/
public interface UserDao {
/**
* 添加用户.
*
* @param user
* @return
*/
boolean insertUser(User user);
/**
* 更新用户.
*
* @param user
* @return
*/
boolean updateUser(User user);
/**
* 删除用户.
* @param id
* @return
*/
boolean deleteUser(int id);
/**
* 查找用户.
* @param name
* @return
*/
List<User> queryByName(String name);
}
UserDaoImp.java
package com.wq.dao.imp;
import java.util.List;
import com.wq.dao.UserDao;
import com.wq.ibaits.IbaitsUtil;
import com.wq.vo.User;
public class UserDaoImp implements UserDao {
@Override
public boolean insertUser(User user) {
// TODO Auto-generated method stub
return IbaitsUtil.insert(user, "insertUserByVO");
}
@Override
public boolean updateUser(User user) {
// TODO Auto-generated method stub
return IbaitsUtil.update(user, "updateUserByVO");
}
@Override
public boolean deleteUser(int id) {
// TODO Auto-generated method stub
return IbaitsUtil.delete(id, "deleteUser");
}
@Override
@SuppressWarnings("unchecked")
public List<User> queryByName(String name) {
// TODO Auto-generated method stub
return IbaitsUtil.queryForList(name, "selectUser");
}
}
UserDaoTest.java
package com.wq.test;
import java.util.List;
import junit.framework.TestCase;
import com.wq.dao.UserDao;
import com.wq.dao.imp.UserDaoImp;
import com.wq.vo.User;
public class UserDaoTest extends TestCase {
public UserDao dao = new UserDaoImp();
public void testInsertUser() {
System.out.println("testInsertUser");
User user = new User();
user.setName("狠心啊");
user.setAge(1);
assertEquals(dao.insertUser(user), true);
}
public void testUpdateUser() {
System.out.println("testUpdateUser");
User user = new User();
user.setId(7);
user.setName("狠心啊");
user.setAge(18);
assertEquals(dao.updateUser(user), true);
}
public void testDeleteUser() {
System.out.println("testDeleteUser");
int id = 7;
assertEquals(dao.deleteUser(id), true);
}
public void testQueryByName() {
System.out.println("testQueryByName");
List<User> list = dao.queryByName("wq");
assertEquals(list.size(), 1);
}
}