4.Mybatis的Map操作和模糊查询

1.通过Map添加用户

1.1UserMapper添加addUser2(Map<String,Objext>,map)

public interface UserMapper {

    // 查询所有用户

    List<User> getUserList();

    // 通过id查询

    User getUserById(int id);

    // 添加一个用户

    int addUser(User user);

    // 通过Map添加用户

    int addUser2(Map<String,Object> map);

    // 修改用户

    int updateUser(User user);

    // 根据id删除用户

    int deleteUser(int id);

 

    // 模糊查询

    List<User> getUserLike(String value);

 

 

}

 

1.2UserMapper.xml编写sql语句

 <!--通过Map添加用户-->

    <insert id="addUser2" parameterType="map">

        insert into user (id,name,pwd) values

  (#{userId},#{userName},#{userPwd})

    </insert>

 

1.3test测试类添加addUser2()方法

@Test //通过Map添加用户

  public void addUser2(){

      SqlSession sqlSession = MybatisUtils.getSqlSession();

      UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

      HashMap<String, Object> map = new HashMap<String, Object>();

      map.put("userId",4);

      map.put("userName","鲁班");

      map.put("userPwd","123456");

      int rows = userMapper.addUser2(map);

      if (rows>0){

          System.out.println("成功插入"+rows+"条数据");

      }else {

          System.out.println("插入数据失败");

      }

      sqlSession.commit();

      sqlSession.close();

  }

 

1.4测试结果

4.Mybatis的Map操作和模糊查询

1.5总结

1.5.1 Map传递参数,直接在sql中取出key值即可

1.5.2 对象传递参数,直接在sql中取出属性即可

1.5.3 只有在一个基本类型参数的情况下,可以直接在参数中取到

1.5.4 多个参数用Map,或者注解

 

2.模糊查询

2.1UserMapper添加getUserLike()方法

public interface UserMapper {

    // 查询所有用户

    List<User> getUserList();

    // 通过id查询

    User getUserById(int id);

    // 添加一个用户

    int addUser(User user);

    // 通过Map添加用户

    int addUser2(Map<String,Object> map);

    // 修改用户

    int updateUser(User user);

    // 根据id删除用户

    int deleteUser(int id);

 

    // 模糊查询

    List<User> getUserLike(String value);

}

 

2.2UserMapper.xml编写sql语句

 <!--模糊查询-->

    <select id="getUserLike" resultType="com.my.pojo.User">

        <!--select * from user where name like "%"#{value}"%"-->

        select * from user where name like concat("%"#{value}"%")

    </select>

 

2.3test测试类编写测试方法getUserLike()

 @Test // 模糊查询

    public void getUserLike(){

      SqlSession sqlSession = MybatisUtils.getSqlSession();

      UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

      List<User> userList = userMapper.getUserLike("%李%");

      for (User user:userList){

          System.out.println(user);

      }

      sqlSession.close();

  }

 

2.4测试结果

4.Mybatis的Map操作和模糊查询

2.5模糊查询怎么写?

2.5.1 java代码执行的时候,传递通配符% %

4.Mybatis的Map操作和模糊查询

2.5.2 sql中拼接使用通配符

4.Mybatis的Map操作和模糊查询

2.5.3使用concat()函数进行字符串拼接

4.Mybatis的Map操作和模糊查询

 

 

2.5.4 ${}无法防止sql注入问题

 

4.Mybatis的Map操作和模糊查询