第一、项目目录结构
我们提前必须建立必要的数据库和表
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);
}
}