万能的map
User接口类
在接口方法中,参数直接传递Map;
User addUser2(Map<String,Object>map);
mapper配置文件
编写sql语句的时候,需要传递参数类型,参数类型为map
<insert id="addUser" parameterType="map">
insert into user.user(username, password, phone, qqnumber) VALUES (#{userid},#{pw},#{phon},#{qq});
</insert>
test测试方法
在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!
@Test
public void testaddUser2(){
SqlSession sqlSession = mybatisUtil.getsqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object>map = new HashMap<String, Object>();
map.put("userid",5);
map.put("pw","sdad");
map.put("phon",2143412341);
map.put("qq",149812701);
mapper.addUser2(map);
sqlSession.close();
}
- 总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
模糊查询
List<User> getUSerlike(String username);
方法一(在Java代码中添加sql通配符)
<select id="getUserList" resultType="com.mybatis.pojo.User">
select * from user.user where name like #{username};
</select>
@Test
public void testlikeList(){
SqlSession sqlSession = mybatisUtil.getsqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.getUSerlike("%李%");
List<User> userList = mapper.getUserList();
for (User user:userList){
System.out.println(user);
}
//关闭sqlsession
sqlSession.close();
}
方法二(在sql语句中拼接通配符,会引起sql注入)
<select id="getUserList" resultType="com.mybatis.pojo.User">
select * from foo where bar like "%"#{value}"%"
</select>
@Test
public void testlikeList(){
SqlSession sqlSession = mybatisUtil.getsqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.getUSerlike("李");
List<User> userList = mapper.getUserList();
for (User user:userList){
System.out.println(user);
}
//关闭sqlsession
sqlSession.close();
}