目录
万能Map模糊查询万能Map
我们在上一节博文里面将到利用Mybatis实现CRUD操作的时候,我们在数据库表中新增一条数据是这样操作的:
实体类对象的字段有:
package com.hpf.bean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; //编写实体类User @Data @AllArgsConstructor @NoArgsConstructor public class User { private Long id; private String username; private String password; }
新增一条记录的xml文件配置内容为:
<insert id="addUser" parameterType="com.hpf.bean.User"> insert into userinfo (id,username,password) values (#{id},#{username},#{password}) </insert>
其中,#后带的字段名都是我们实体类用户类里面一模一样的字段名。
接着我们再来试试用Map的方式实现用户记录的新增:
<insert id="addUserByMap" parameterType="Map"> insert into userinfo (id,username,password) values (#{id},#{user},#{pwd}) </insert>
测试部分:
@Test public void testAddUserByMap(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); Map<String,Object> map = new HashMap<>(); map.put("id", 6L); map.put("user", "张三"); map.put("pwd", "666"); int res = mapper.addUserByMap(map); sqlSession.commit(); sqlSession.close(); }
说明:我们业务相关的参数需要哪些字段内容,我们就往map里面传哪些字段内容就行。
模糊查询
要求查询下表内为李性的用户信息:
package com.hpf.dao; import com.hpf.bean.User; import java.util.List; import java.util.Map; //这个接口实现的是对于用户的相关操作 public interface UserDao { //模糊查询用户信息 List<User> getUserByLike(Map map); }
<select id="getUserByLike" parameterType="Map" resultType="com.hpf.bean.User"> select * from userinfo where username like #{value} </select>
@Test public void testGetUserByLike(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); Map<String,Object> map = new HashMap<>(); map.put("value", "李%"); List<User> userByLike = mapper.getUserByLike(map); for(User user:userByLike) System.out.println(user); }
结果如图所示:
说明:模糊查询在这种方式下其实还有一种写法也可以得出结果,但是为了防止sql注入问题,我们不建议如下的写法:
<select id="getUserByLike" parameterType="Map" resultType="com.hpf.bean.User"> select * from userinfo where username like #{value}"%" </select>