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测试结果
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测试结果
2.5模糊查询怎么写?
2.5.1 java代码执行的时候,传递通配符% %
2.5.2 在sql中拼接使用通配符
2.5.3使用concat()函数进行字符串拼接
2.5.4 ${}无法防止sql注入问题