MyBatis之增删改查(CRUD)操作

增删改查(CRUD)操作:

Select标签是mybatis中最常用的标签之一,通过函数的返回值属性属性可以详细配置每一条SQL语句。

  • id:命名空间中唯一的标识符,接口中的方法名与映射文件中的SQL语句ID 一一对应。

  • parameterType:传入SQL语句的参数类型,参数多时可以多尝试使用Map。

  • resultType:SQL语句返回值类型。

1. SELECT操作:

  • 在Mapper中添加对应方法:

public interface Mapper {
  //根据id查询用户
  User selectUserById(int id);
  //根据name查询用户
  User selectUserByName(String name);
}
  • 在Mapper.xml中添加select语句:

<mapper namespace="com.mybatis.dao.Mapper">
   <select id="selectUserById" resultType="com.mybatis.pojo.User">
      select * from user where id = #{id}
</select>
   <select id="selectUserByName" resultType="com.mybatis.pojo.User">
      select * from user where name = #{name}
   </select>
</mapper>
  • 测试类中测试:

public class MapperTest {
  @Test
  public void selectUser() {
      SqlSession session = MybatisUtils.getSession(); //获取SqlSession连接
      Mapper mapper = session.getMapper(Mapper.class);
      User user = mapper.selectUserById(3);
      User user1 = mapper.selectUserByName("李四");
      System.out.println("根据Id查询:"+user);
      System.out.println("根据name查询:"+user1);
      session.close();
  }
}
  • 运行结果:

2. INSERT操作:

  • Mapper接口中添加对应的方法:

//插入用户数据
  int addUser(User user);
  • Mapper.xml中添加insert语句:

<insert id="addUser" parameterType="com.mybatis.pojo.User">
    insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
  • 测试类中测试:

  User user3 = new User(4,"赵六","qwer");
      int flag = mapper.addUser(user3);
      System.out.println("插入成功: "+flag);
      session.commit(); //注意记得提交事务
      session.close();

增删改操作是事务型操作,要主动提交事务才会持久化到文件中

  • 运行结果:

3. UPDATE操作:

  • Mapper接口中添加对应的方法:

//更新一个用户
  int updateUser(User user);
  • Mapper.xml中添加update语句:

<update id="updateUser" parameterType="com.mybatis.pojo.User">
  update user set name=#{name},pwd=#{pwd} where id = #{id}
</update>
  • 测试类中测试:

User user4 = mapper.selectUserByName("李四");
      System.out.println("修改前密码:"+user4.getPwd());
      user4.setPwd("654321");
      mapper.updateUser(user4);
      System.out.println("修改后密码:"+user4.getPwd());
      session.commit(); //注意记得提交事务

增删改操作是事务型操作,要主动提交事务才会持久化到文件中

  • 运行结果:

4. DELETE操作:

  • Mapper接口中添加对应的方法:

//根据名称删除用户
  void deleteUser(String name);
  • Mapper.xml中添加delete语句:

<delete id="deleteUser" parameterType="com.mybatis.pojo.User">
  delete from user where name = #{name}
</delete>
  • 测试类中测试:

//删除用户”张三“
      mapper.deleteUser("张三");

      session.commit(); //注意记得提交事务

增删改操作是事务型操作,要主动提交事务才会持久化到文件中

  • 运行结果:

5. 模糊查询

  • Mapper接口中添加对应的方法:

//模糊查询
  User selectLike(String name);
  • Mapper.xml中添加模糊查询语句:

<select id="selectLike" resultType="com.mybatis.pojo.User">
      select * from user where name like "%"#{name}"%"
</select>

注意防止sql注入问题

  • 测试类中测试:

//查询姓名中有”王“的用户信息
User user5 = mapper.selectLike("王");
      System.out.println("结果为:"+user5);
      session.commit(); //注意记得提交事务

增删改操作是事务型操作,要主动提交事务才会持久化到文件中

  • 运行结果:

6. Map查询

  • Mapper接口中添加对应的方法:

//Map查询
  User selectByMap(Map<String,Object> map);
  • Mapper.xml中添加Map语句:

<select id="selectByMap" parameterType="map" resultType="com.mybatis.pojo.User">
      select * from user where name = #{username} and id = #{id}
</select>
  • 测试类中测试:

Map<String, Object> map = new HashMap<String, Object>();
      map.put("username","王五");
      map.put("id","1");
      User user6 = mapper.selectByMap(map);
      System.out.println(user6);
      session.commit(); //注意记得提交事务

增删改操作是事务型操作,要主动提交事务才会持久化到文件中

  • 运行结果:

7. 总结

  • 所有的增删改操作都需要提交事务!

  • 接口所有的普通参数,尽量都写上@Param参数,多个参数时,必须写上!

  • 参数较多时,可以考虑使用map传递参数!

  • 为了规范操作,在SQL的配置文件中,尽量将Parameter和resultType参数都写上!

posted on 2022-02-11 19:11  lixin05  阅读(168)  评论(0编辑  收藏  举报