2Mybatis之CRUD

CRUD

1常用的增删改查

  • select
  • insert
  • update
  • delete

2注意点

  • id:就是对于的namespace中的方法名
  • resultType:Sql语句执行的返回值(只有insert有)
  • parameterType:参数类型
  • 对象中的属性可以直接取出来
  • 增删改需要提交事务!
//UserDao或UserMapper
public interface UserDao {
    //获取全部用户
    List<User> getUserList();

    //根据id查询用户
    User getUserById(int id);

    //insert一个用户
    int addUser(User user);

    //修改用户
    int updateUser(User user);

    //删除用户
    int deleteUser(int id);

    //模糊查询
    List<User> getUserLike(String value);
}
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--  UserMapper.xml-->
<mapper namespace="com.fao.dao.UserDao">
    <!--  获取全部用户 -->
    <select id="getUserList" resultType="com.fao.pojo.User">
        select * from mybatis.user;
    </select>

     <!--  根据id查询用户 -->
    <select id="getUserById" parameterType="int" resultType="com.fao.pojo.User">
        select * from mybatis.user where id=#{id}
    </select>

    <!--  插入一个用户 -->
    <!--对象中的属性可以直接取出来-->
    <insert id="addUser" parameterType="com.fao.pojo.User" >
        insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

    <!--  修改用户 -->
    <update id="updateUser" parameterType="com.fao.pojo.User">
        update mybatis.user set  name=#{name},pwd=#{pwd}  where id=#{id}
    </update>

    <!--  删除用户 -->
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>

    <!--  模糊查询 -->
	<select id="getUserLike" resultType="com.fao.pojo.User">
        select * from mybatis.user where name like #{value}
    </select>
</mapper>
//测试类
public class UserDaoTest {
    //获取全部用户
    @Test
    public void test(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        
        List<User> userList = mapper.getUserList();
        for (User user:userList){
            System.out.println(user);
        }

        sqlSession.close();
    }
    
    //根据id查询用户
    @Test
    public void test2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        
        User user = mapper.getUserById(1);
        System.out.println(user);

        sqlSession.close();
    }

    //新增用户
    //增删改需要提交事务
    @Test
    public void test3(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        
        int res = mapper.addUser(new User(4, "haha", "12333"));
        if (res>0){
            System.out.println("插入成功");
        }
        //提交事务
        sqlSession.commit();

        sqlSession.close();
    }

    //更改用户
    @Test
    public void test4(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
		UserDao mapper = sqlSession.getMapper(UserDao.class);
        
        mapper.updateUser(new User(4,"hehe","123123"));
        //提交事务
        sqlSession.commit();

        sqlSession.close();
    }

    //删除用户
    @Test
    public void test5(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        
        mapper.deleteUser(4);
        //提交事务
        sqlSession.commit();

        sqlSession.close();
    }

    //模糊查询
    @Test
    public void test7(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);

        //注意%写在这里 防止sql注入
        List<User> userLike = mapper.getUserLike("李%");
        for (User user:userLike){
            System.out.println(user);
        }

        sqlSession.close();
    }
}

3万能Map

  • 假设我们的实体类或者数据库中的表,字段或者参数过多,我们应当考虑使用Map
  • Map传递参数,直接在sql中取出key即可(parameterType="map")
  • 只有一个基本类型参数的情况下,可以直接在SQL中取到
  • 多个参数用Map,或者注解
//UserDao或UserMapper
public interface UserDao {
    //万能的map 传递map的key
    int addUser2(Map<String,Object> map);
}
<!--  UserMapper.xml-->
<mapper>
    <insert id="addUser2" parameterType="map" >
        insert into mybatis.user(id,name,pwd) values (#{userId},#{userName},#{userPwd})
    </insert>
</mapper>
//测试类
  @Test
    public void test6(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);

        //map好处在于可以随意修改前面值
        HashMap<String, Object> map = new HashMap<>();
        map.put("userId",5);
        map.put("userName","hello");
        map.put("userPwd","222222");

        mapper.addUser2(map);
        sqlSession.commit();

        sqlSession.close();
    }
posted @ 2022-05-21 12:12  fao99  阅读(21)  评论(0)    收藏  举报