MyBatis增删改查

朱雀 2023-02-19 15:23 130阅读 0赞

CRUD

增删改必须提交事务才会生效。

  1. sqlSession.commit();

1、namespace

namespace中的包名要和Dao/Mapper接口的包名一致。

2、select、update、insert、delete

查询语句:

  • id:就是对应的namespace中的方法名
  • resultType:SQL语句执行的返回值。
  • parameterType:参数类型。

编写Mapper方法

  1. package com.study.dao;
  2. import com.study.pojo.User;
  3. import java.util.List;
  4. public interface UserMapper {
  5. public List<User> getUserList();
  6. public User selectUserById(int id);
  7. public void insertUser(User user);
  8. public void updateUser(User user);
  9. public void deleteUser(int id);
  10. }

编写mapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!--绑定UserMapper-->
  6. <mapper namespace="com.study.dao.UserMapper">
  7. <!--id和方法名一致-->
  8. <select id="getUserList" resultType="com.study.pojo.User">
  9. select * from user;
  10. </select>
  11. <select id="selectUserById" parameterType="int" resultType="com.study.pojo.User">
  12. select * from user where `id`=#{
  13. id};
  14. </select>
  15. <insert id="insertUser" parameterType="com.study.pojo.User">
  16. insert into user(`id`,`name`,`pwd`) values(#{
  17. id},#{
  18. name},#{
  19. pwd});
  20. </insert>
  21. <update id="updateUser" parameterType="com.study.pojo.User">
  22. update user set name=#{
  23. name},pwd=#{
  24. pwd} where id=#{
  25. id}
  26. </update>
  27. <delete id="deleteUser" parameterType="int">
  28. delete from user where id=#{
  29. id}
  30. </delete>
  31. </mapper>

编写Junit测试

  1. package com.study.dao;
  2. import com.study.pojo.User;
  3. import com.study.utils.MybatisUtils;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.junit.Test;
  6. import java.util.List;
  7. public class UserDaoTest {
  8. @Test
  9. public void test(){
  10. //第一步:获取sqlSession对象
  11. SqlSession sqlSession = MybatisUtils.getSqlSession();
  12. //方式一:
  13. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  14. List<User> userList = userMapper.getUserList();
  15. for(User user : userList){
  16. System.out.println(user);
  17. }
  18. //关闭sqlSession
  19. sqlSession.close();
  20. }
  21. @Test
  22. public void selectUserById(){
  23. //1、获取sqlSession
  24. SqlSession sqlSession = MybatisUtils.getSqlSession();
  25. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  26. User user = mapper.selectUserById(4);
  27. System.out.println(user);
  28. //2、关闭sqlSession,防止内存泄漏
  29. sqlSession.close();
  30. }
  31. @Test
  32. public void inserTest(){
  33. //1、获取sqlSession
  34. SqlSession sqlSession = MybatisUtils.getSqlSession();
  35. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  36. User user = new User(4,"小红","654321");
  37. mapper.insertUser(user);
  38. //2、提交事务
  39. sqlSession.commit();
  40. //3、关闭sqlSession,防止内存泄漏
  41. sqlSession.close();
  42. }
  43. @Test
  44. public void updateTest(){
  45. //1、获取sqlSession
  46. SqlSession sqlSession = MybatisUtils.getSqlSession();
  47. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  48. User user = new User(4,"小蓝","54321");
  49. mapper.updateUser(user);
  50. //2、提交事务
  51. sqlSession.commit();
  52. //3、关闭sqlSession,防止内存泄漏
  53. sqlSession.close();
  54. }
  55. @Test
  56. public void deleteTest(){
  57. //1、获取sqlSession
  58. SqlSession sqlSession = MybatisUtils.getSqlSession();
  59. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  60. mapper.deleteUser(4);
  61. //2、提交事务
  62. sqlSession.commit();
  63. //3、关闭sqlSession,防止内存泄漏
  64. sqlSession.close();
  65. }
  66. }

错误分析

  • 标签不要匹配错误
  • resource绑定mapper,需要使用路径!
  • 程序配置文件必须符合规范!
  • NullPointException,没有注册到资源!
  • 输出的xml文件中文存在中文乱码问题!
  • maven资源没有导出问题!

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读