Ibatis基本操作

本操作所涉及的文件

首先创建数据库连接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);
	}

}


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值