本操作所涉及的文件
首先创建数据库连接jdbc.properties
driver=oracle.jdbc.driver.OracleDriver
connectionURL=jdbc:oracle:thin:@localhost:1521:benjipractise
username=benjipractise
password=benjipractise
然后创建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>
<!-- 导入jdbc.properties数据库连接 -->
<properties resource="jdbc.properties"/>
<!-- 事物处理 -->
<transactionManager type="JDBC">
<!-- 数据源连接 -->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${connectionURL}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<!-- 导入sqlMap文件 -->
<sqlMap resource="net/ibatis/practise/user/dao/UserMap.xml"/>
</sqlMapConfig>
创建PRACTISE_USER表对应的POJO
package net.ibatis.practise.user.vo;
public class User {
private Integer userId;
private String userName;
private String password;
private Integer sex;
private Integer age;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
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 Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "UserId="+this.getUserId()+",userName="+this.getUserName()+
",password="+this.getPassword()+",sex="+this.getSex()+
",age="+this.getAge();
}
}
创建Dao接口,以及接口实现类
package net.ibatis.practise.user.dao;
import java.util.List;
import net.ibatis.practise.user.vo.User;
public interface UserDao {
public List<User> getUserAll();
public int addUser(User user);
public int updateUser(User user);
public int deleteUser(User user);
}
package net.ibatis.practise.user.dao.impl;
import java.util.List;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;
import net.ibatis.practise.user.dao.UserDao;
import net.ibatis.practise.user.vo.User;
public class UserDaoImpl extends SqlMapDaoTemplate implements UserDao {
public UserDaoImpl(DaoManager daoManager) {
super(daoManager);
// TODO Auto-generated constructor stub
}
@Override
public List<User> getUserAll() {
// TODO Auto-generated method stub
return queryForList("getUserAll", "");
}
@Override
public int addUser(User user) {
// TODO Auto-generated method stub
return (Integer) insert("addUser", user);
}
@Override
public int updateUser(User user) {
// TODO Auto-generated method stub
return update("updateUser", user);
}
@Override
public int deleteUser(User user) {
// TODO Auto-generated method stub
return delete("deleteUser", user);
}
}
创建User对应的sqlMap文件
<?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="net.ibatis.practise.user.vo.User"/>
<resultMap class="user" id="getUserAllResultMap">
<result property="userId" column="USERID" javaType="int" jdbcType="number"/>
<result property="userName" column="USERNAME" javaType="string" jdbcType="varchar"/>
<result property="password" column="PASSWORD" javaType="string" jdbcType="varchar"/>
<result property="sex" column="SEX" javaType="int" jdbcType="number"/>
<result property="age" column="AGE" javaType="int" jdbcType="number"/>
</resultMap>
<parameterMap class="user" id="userParameterMap">
<parameter property="userId" javaType="int" jdbcType="number"/>
<parameter property="userName" javaType="string" jdbcType="varchar"/>
<parameter property="password" javaType="string" jdbcType="varchar"/>
<parameter property="sex" javaType="int" jdbcType="number"/>
<parameter property="age" javaType="int" jdbcType="number"/>
</parameterMap>
<select id="getUserAll" resultMap="getUserAllResultMap">
SELECT * FROM PRACTISE_USER
</select>
<insert id="addUser" parameterMap="userParameterMap">
<selectKey resultClass="int" keyProperty="userId">
SELECT SEQ_USERID.NEXTVAL as userId FROM DUAL
</selectKey>
INSERT INTO PRACTISE_USER (USERID,USERNAME,PASSWORD,SEX,AGE) VALUES (?, ?, ?, ?, ?)
</insert>
<update id="updateUser" parameterClass="user">
UPDATE PRACTISE_USER SET PASSWORD=#password# WHERE USERID=#userId#
</update>
<delete id="deleteUser" parameterClass="user">
DELETE FROM PRACTISE_USER WHERE USERID=#userId#
</delete>
</sqlMap>
创建Ibatis的Dao文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE daoConfig
PUBLIC
"-//ibatis.apache.org//DTD DAO Configuration 2.0//EN"
"http://ibatis.apache.org/dtd/dao-2.dtd">
<daoConfig>
<context id="userDaoConfig">
<!-- 事物 -->
<transactionManager type="SQLMAP">
<!-- 配置事物文件 -->
<property name="SqlMapConfigResource" value="SqlMapConfig.xml"/>
</transactionManager>
<!-- 配置DAo接口及其实现类 -->
<dao implementation="net.ibatis.practise.user.dao.impl.UserDaoImpl"
interface="net.ibatis.practise.user.dao.UserDao"/>
</context>
</daoConfig>
连接Ibatis Dao工具类
package net.ibatis.practise.util;
import java.io.IOException;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.DaoManagerBuilder;
public class DaoClassUtil {
public static Object getDaoClass(String resource, Class nameClass, String daoName) throws IOException{
Reader reader = Resources.getResourceAsReader(resource);
DaoManager daoManager = DaoManagerBuilder.buildDaoManager(reader);
return daoManager.getDao(nameClass, daoName);
}
}
密码加密工具类
package net.ibatis.practise.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
private final static char[] hexDigits = {'1','2','3','4','5','6','7','8','9','0',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z'};
public static String getMD5(String password){
try {
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
messageDigest.update(password.getBytes());
// 获得密文
byte[] md = messageDigest.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char[] str = new char[j*2];
int k = 0;
for (int i = 0; i < j; i++) {
byte b = md[i];
str[k++] = hexDigits[b >>> 4 & 0xf];
str[k++] = hexDigits[b & 0xf];
}
return new String(str);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
System.out.println(MD5Util.getMD5("!"));
}
}
生成数据表主键,自动生成类(此程序未用到,生成的主键只要根据配置文件中的selectKey生成的)
package net.ibatis.practise.util;
import java.util.UUID;
public class UUIDUtil {
public static String getUUID(){
return UUID.randomUUID().toString();
}
}
执行操作类
package net.ibatis.practise.user.main;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.DaoManagerBuilder;
import net.ibatis.practise.user.dao.UserDao;
import net.ibatis.practise.user.vo.User;
import net.ibatis.practise.util.DaoClassUtil;
import net.ibatis.practise.util.MD5Util;
import net.ibatis.practise.util.UUIDUtil;
public class UserMain {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource = "SqlDaoMap.xml";
//获取UserDao
UserDao userDao = (UserDao) DaoClassUtil.getDaoClass(resource, UserDao.class, "userDaoConfig");
List<User> users = userDao.getUserAll();
//遍历获取到的user对象并且进行输出
for (User user : users) {
System.out.println(user.toString());
}
//创建user对象
User user = new User();
user.setUserName("ZDX");
user.setPassword(MD5Util.getMD5("7890"));
user.setSex(1);
user.setAge(30);
//进行增加操作,根据配置文件中的信息selectKey返回主键值赋给i,并且进行输出
int i = userDao.addUser(user);
System.out.println("i="+i);
//进行更新操作,更新会返回更新条数数目值
// user.setUserId("9aa5dcb2-d7ce-47bb-98c8-4976faedea2f");
// user.setPassword(MD5Util.getMD5("000000"));
// int i = userDao.updateUser(user);
//进行删除操作,删除会返回删除条数数目值
// user.setUserId("9aa5dcb2-d7ce-47bb-98c8-4976faedea2f");
// int i = userDao.deleteUser(user);
// System.out.println(i);
}
}