1、MAP的应用, 我们在查询过程中经常遇到多参数问题和名称固定的问题,而MAP便可以轻松解决这类问题,他可以随意定义参数。然后进行MAP传参来编写程序
(1)我们编写一个接口类对象 参数是MAP 这里第二个参数我们定义为Object可以方便我们进行多种类型传参。
int addUser2(Map<String, Object> map);
(2)随后实现这个接口对象在XML文件中,可以看到我们的名称不再是之前的ID name pwd而改成了后面的随意的名称,我们编写一个测试类进行测试。
<insert id="addUser2" parameterType="Map">
insert into mybatis.user1 (id, name, pwd) values(#{useid},#{usename},#{usepwd});
</insert>
(3)测试类进行测试,我们传递参数的名字和上面的接口复现名称相同,随后我们可以通过put进行参数传递,然后进入到一个新的变量中。
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UseDao mapper = sqlSession.getMapper(UseDao.class);
//字段或者参数过多我们应当考虑使用Map
Map<String, Object> hashMap = new HashMap<String,Object>();
//这里的对象要和UseMapper里面定义的名字一样
hashMap.put("useid",9);
hashMap.put("usename","xdm");
hashMap.put("usepwd","123456");
int id = mapper.addUser2(hashMap);
//提交事务
sqlSession.commit();
sqlSession.close();
}
2、模糊匹配,这里主要有两种方式
(1)使用参数传递的方式进行模糊查询
//定义一个接口对象
List<User> getUserLike(String value);
//实现该接口对象
<select id="getUserLike" resultType="com.xie.pojo.User">
select * from mybatis.user1 where name like #{value}
</select>
传递模糊查询
public void like(){
//第一步获得sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一 执行sql 通过接口的Class对象获得相应的接口
UseDao userDao = sqlSession.getMapper(UseDao.class);
//这里要传递通配符 % % !才能匹配成功
//sql拼接也可以“%” “%”
List<User> userList = userDao.getUserLike("%李%");
for (User user : userList) {
System.out.println(user);
}
//关闭
sqlSession.close();
}
(2)在 SQL语句中实现模糊查询方式,这里主要是修改接口对象的部分,上面方法是我们在传递对象过程中将方法传递进去的,而我们可以通过修改第二张图的接口实现模糊查询方法,具体操作如下所示。但是这样的方法相当于将模糊查询方式定死,有时并不符合我们的需求。
//实现该接口对象
<select id="getUserLike" resultType="com.xie.pojo.User">
select * from mybatis.user1 where name like "%"#{value}"%"
</select>