CRUD是指在做计算处理时的增加(Create)、重新取得数据(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能。(百度百科)。说白了就是增删改查。
jar包和数据库表,实体类都和MyBatis学习记录(1)里用的一样。
工程目录:
userMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapping.userMapper">
<!-- 根据id查询得到一个user对象-->
<select id="selectUserById" parameterType="String" resultType="com.mybatis.domain.User">
SELECT * FROM t_user WHERE uid=#{id}
</select>
<!-- 添加一个用户 -->
<insert id="insertUser" parameterType="com.mybatis.domain.User">
INSERT INTO t_user VALUES(#{uid},#{uname},#{upassword})
</insert>
<!-- 删除一个用户 -->
<delete id="deleteUserById" parameterType="String">
DELETE FROM t_user WHERE uid=#{id}
</delete>
<!-- 更新用户信息 -->
<update id="updateUser" parameterType="com.mybatis.domain.User">
UPDATE t_user SET uname=#{uname},upassword=#{upassword} WHERE uid=#{uid}
</update>
</mapper>
mybatisConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="dongjiong" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件 -->
<mapper resource="com/mybatis/mapping/userMapper.xml"/>
</mappers>
</configuration>
userDao 接口
package com.mybatis.dao;
import com.mybatis.domain.User;
public interface UserDao {
//根据id查询用户
public User selectUserById(String uid) throws Exception;
//添加用户
public void insertUser(User user) throws Exception;
//删除用户
public void deleteUserById(String uid) throws Exception;
//更新用户
public void updateUser(User user) throws Exception;
}
userDaoImpl 实现类
package com.mybatis.dao;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.mybatis.domain.User;
public class UserDaoImpl implements UserDao{
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public User selectUserById(String uid) throws Exception {
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("com.mybatis.mapping.userMapper.selectUserById", uid);
session.close();
return user;
}
@Override
public void insertUser(User user) throws Exception {
SqlSession session = sqlSessionFactory.openSession();
session.insert("com.mybatis.mapping.userMapper.insertUser", user);
//提交
session.commit();
session.close();
}
@Override
public void deleteUserById(String uid) throws Exception {
SqlSession session = sqlSessionFactory.openSession();
session.delete("com.mybatis.mapping.userMapper.deleteUserById", uid);
//提交
session.commit();
session.close();
}
@Override
public void updateUser(User user) throws Exception {
SqlSession session = sqlSessionFactory.openSession();
session.delete("com.mybatis.mapping.userMapper.updateUser", user);
//提交
session.commit();
session.close();
}
}
单元测试
package com.mybatis.test;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.mybatis.dao.UserDao;
import com.mybatis.dao.UserDaoImpl;
import com.mybatis.domain.User;
public class UserDaoImplTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws Exception {
//mybatis的配置文件
String resource = "mybatisConfig.xml";
//得到配置文件流
InputStream is = UserDaoImplTest.class.getClassLoader().getResourceAsStream(resource);
//创建会话工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
}
@Test
public void testSelectUserById() throws Exception {
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
User user = userDao.selectUserById("345");
System.out.println(user);
}
@Test
public void testInsertUser() throws Exception {
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
User user = new User();
user.setUid("F567");
user.setUname("bobo");
user.setUpassword("808080");
userDao.insertUser(user);
}
@Test
public void testDeleteUserById() throws Exception {
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
userDao.deleteUserById("345");
}
@Test
public void testUpdateUser() throws Exception {
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
User user = new User();
user.setUid("F567");//赋值为数据库中已经存在的user Id
user.setUname("lingbo");
user.setUpassword("2222");
userDao.updateUser(user);
}
}
增删改都要调用commit()函数提交事务,因为设置的不是自动提交