ibatis实现对User实体的增删改查操作-第二节

本文档详细介绍了使用iBATIS在Java项目中实现User实体的增删改查步骤,包括dao层接口与实现的编写,以及ibatis的SqlMapConfig.xml和User.xml配置文件的设置,最后进行了单元测试验证。
摘要由CSDN通过智能技术生成

第一、项目目录结构


我们提前必须建立必要的数据库和表

create table users(  
    userId INT(10) AUTO_INCREMENT PRIMARY KEY,  
    username VARCHAR(10) NOT NULL,  
    password VARCHAR(32) NOT NULL,  
    mobile VARCHAR(11),  
    email VARCHAR(40)  
); 

第二、dao层如何继承ibatis

1.dao层接口编写:

package com.techbirds.ibatis.dao;

import java.sql.SQLException;
import java.util.List;

import com.techbirds.ibatis.model.User;

public interface IUserDao {
    //查询用户集合  
    public List<User> QueryUserList()throws SQLException;  
    //根据id查询用户  
    public User QueryUserById(int id)throws SQLException;  
    //添加新用户  
    public void AddUser(User user) throws SQLException;  
    //修改用户信息  
    public int UpdateUser(User user) throws SQLException;  
    //删除用户  
    public void DeleteUserById(int id) throws SQLException;
}

2.dao层实现编写:


package com.techbirds.ibatis.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.techbirds.ibatis.dao.IUserDao;
import com.techbirds.ibatis.model.User;

public class UserDaoImpl implements IUserDao {
	
	private static SqlMapClient sqlMap=null;  
    static{  
        try {  
        	String config = "com/techbirds/ibatis/SqlMapConfig.xml";  
            Reader reader = Resources.getResourceAsReader(config);  
            sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
	
	public UserDaoImpl() {
		super();
	}

	@Override
	public void AddUser(User user) throws SQLException {
		sqlMap.insert("AddUser", user);
	}

	@Override
	public void DeleteUserById(int id) throws SQLException {
		sqlMap.delete("DeleteUserById", id);
	}

	@Override
	public User QueryUserById(int id) throws SQLException {
		return (User) sqlMap.queryForObject("QueryUserById", id);
	}

	@Override
	@SuppressWarnings("unchecked")
	public List<User> QueryUserList() throws SQLException {
		return sqlMap.queryForList("QueryUserList");
	}

	@Override
	public int UpdateUser(User user) throws SQLException {
		return sqlMap.update("UpdateUser", user);
	}

}


第三、ibatis使用的两个重要配置文件

配置之前必须提供jdbc的配置文件:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ibatis?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

1.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" />  
    <transactionManager type="JDBC">  
        <dataSource type="SIMPLE">  
            <property name="JDBC.Driver" value="${jdbc.driverClassName}" />  
            <property name="JDBC.ConnectionURL" value="${jdbc.url}" />  
            <property name="JDBC.Username" value="${jdbc.username}" />  
            <property name="JDBC.Password" value="${jdbc.password}" />  
        </dataSource>  
    </transactionManager>  
    <sqlMap resource="com/techbirds/ibatis/resources/User.xml" />  
</sqlMapConfig> 

2.对应实体的配置文件 例如User.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>  
	<typeAlias alias="User" type="com.techbirds.ibatis.model.User" />
	  
	<select id="QueryUserList" resultClass="User">  
	    select * from users  
	</select>
	
	<select id="QueryUserById" resultClass="User" parameterClass="int">
		select * from users where userId=#value#
	</select>
	
	<insert id="AddUser" parameterClass="User">  
		insert into users(username,password,mobile,email) values(#username#,#password#,#mobile#,#email#)  
	</insert>  
	
	<update id="UpdateUser" parameterClass="User">
		update users set username=#username# where userId=#userId#   
	</update>
	 
	<delete id="DeleteUserById" parameterClass="int">
		delete from users where userId=#value#   	
	</delete>
</sqlMap>  

第四、单元测试dao层

测试类:
package com.techbirds.ibatis.model;

import java.sql.SQLException;
import java.util.List;
import java.util.logging.Logger;

import org.junit.Test;

import com.techbirds.ibatis.dao.IUserDao;
import com.techbirds.ibatis.dao.impl.UserDaoImpl;

public class UserIbatisTest {
	
	@SuppressWarnings("unused")
	private Logger logger=Logger.getLogger(UserIbatisTest.class.getName());
	private IUserDao dao=new UserDaoImpl();
	
//	private Reader reader=null;
//	private  SqlMapClient sqlMap=null;
//	
//	@Before
//	public void init() throws IOException{
//		String config = "com/techbirds/ibatis/SqlMapConfig.xml";  
//        reader = Resources.getResourceAsReader(config);
//        sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
//	}
	
	
	//查询用户集合  
	@Test
    public void QueryUserList()throws SQLException{
		List<User> users=dao.QueryUserList();
		for (User user : users) {
			logger.info(user.toString());
		}
    	
    }  
    //根据id查询用户  
	@Test
    public void QueryUserById()throws SQLException{
    	logger.info(dao.QueryUserById(1).toString());
    }
    //添加新用户  
	@Test
    public void AddUser() throws SQLException{
    	User user=new User();
    	user.setUsername("linux");//插入變成亂碼
    	user.setPassword("123456");
    	user.setMobile("15158832320");
    	user.setEmail("992512186@qq.com");
    	dao.AddUser(user);
		
		
    } 
    //修改用户信息  
	@Test
    public void UpdateUser() throws SQLException{
		User user=new User();
		user.setUserId(1);
    	user.setUsername("techbirds");//插入變成亂碼
    	dao.UpdateUser(user);
    } 
    //删除用户
	@Test
    public void DeleteUserById() throws SQLException{
    	dao.DeleteUserById(1);
    }
	
	
	
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值