CRUD操作步骤
- 编写接口类
- 编写接口对应的mapper.xml文件
- 通过SqlSession来获取接口进而调用接口中方法执行(注意事务处理)
查询语句
接口中的方法:
public interface UserDao {
//查询所有的用户
List<User> selectUsers();
//根据id查询用户
User queryById(int id);
}
UserMapper.xml中查询的SQL语句:
<?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">
<!--namespace绑定一个对应的dao/mapper接口-->
<mapper namespace="dao.UserDao">
<!-- select查询语句-->
<select id="selectUsers" resultType="entity.User">
select * from t_user
</select>
<select id="queryById" resultType="entity.User" parameterType="int">
select * from t_user where id=#{id}
</select>
</mapper>
测试类:
public class Test {
@org.junit.Test
public void test(){
//通过封装好的工具类获取SqlSession会话
SqlSession sqlSession = MyBatisUtils.getSqlSession();
//通过接口类型class获取接口对象实例(动态代理)
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行接口中的方法
User user = mapper.queryById(6);
System.out.println(user);
//关闭SqlSession
sqlSession.close();
}
}
插入语句
//插入一条数据
void addUser(User user);
<insert id="addUser" parameterType="entity.User" >
insert into t_user values(#{id},#{username},#{password},#{gender},#{regist_time})
</insert>
测试类:
public class Test {
@org.junit.Test
public void test(){
//通过封装好的工具类获取SqlSession会话
SqlSession sqlSession = MyBatisUtils.getSqlSession();
//通过接口类型class获取接口对象实例(动态代理)
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行接口中的方法
mapper.addUser(new User(10,"ddd","123456",1,new Date()));
List<User> users = mapper.selectUsers();
for (User u:users) {
System.out.println(u);
}
//关闭SqlSession
sqlSession.close();
}
}
注意:增删改需要提交事务,此时执行结果并未提交到数据库中
public class Test {
@org.junit.Test
public void test(){
//通过封装好的工具类获取SqlSession会话
SqlSession sqlSession = MyBatisUtils.getSqlSession();
//通过接口类型class获取接口对象实例(动态代理)
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行接口中的方法
mapper.addUser(new User(10,"ddd","123456",1,new Date()));
List<User> users = mapper.selectUsers();
for (User u:users) {
System.out.println(u);
}
//提交事务
sqlSession.commit();
//关闭SqlSession
sqlSession.close();
}
}
此时再执行结果:
或者在通过SqlSessionFactory工厂获取SqlSession会话时设置自动提交事务也可
SqlSession sqlSession = factory.openSession(true);
更新语句
//更新一条数据
void updateUser(User user);
<update id="updateUser" parameterType="entity.User">
update t_user set password=#{password} = where id=#{id};
</update>
public class Test {
@org.junit.Test
public void test(){
//通过封装好的工具类获取SqlSession会话
SqlSession sqlSession = MyBatisUtils.getSqlSession();
//通过接口类型class获取接口对象实例(动态代理)
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行接口中的方法
mapper.updateUser(new User(6,null,"999",null,null));
sqlSession.commit();
//关闭SqlSession
sqlSession.close();
}
}
扫描二维码关注公众号,回复:
12454389 查看本文章

删除语句
//删除一条数据
void deleteUser(int id);
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>
测试:
public class Test {
@org.junit.Test
public void test(){
//通过封装好的工具类获取SqlSession会话
SqlSession sqlSession = MyBatisUtils.getSqlSession();
//通过接口类型class获取接口对象实例(动态代理)
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行接口中的方法
mapper.deleteUser(10);
sqlSession.commit();
//关闭SqlSession
sqlSession.close();
}
}
删除前:
删除后: