一、模糊查询
mybatis模糊查询拼接正则字符有两种方式:
1、手动拼接:直接在代码中拼接‘%’,优点是如此操作,系统将会sql预处理。
2、利用like '%${value}%',系统自动拼接两端'%',优点是更方便,缺点是不进行sql预处理
(1)、手动拼接
mapper映射文件:
<select id="findByName" resultType="com.shuai.pojo.Bookborrow" parameterType="string">
select * from bookborrow where stuName like #{name}
<!--进行预处理,但自己进行%拼接-->
</select>
测试类:
@Test
public void testByName() throws IOException {
//4得到DAO接口的代理对象
init();
mapper = sqlSession.getMapper(IBookborrow.class);//代理模式
System.out.println(mapper.findByName("%shuai%"));
sqlSession.commit();
//5、释放资源
destory();
}
(2)mybatis自动拼接%
映射文件:
<select id="findByName" resultType="com.shuai.pojo.Bookborrow" parameterType="string">
select * from bookborrow where stuName like '%${value}%' <!--不需要自己拼% , 但未使用预处理,而是直接拼接字符串-->
</select>
测试类:
@Test
public void testByName() throws IOException {
//4得到DAO接口的代理对象
init();
mapper = sqlSession.getMapper(IBookborrow.class);//代理模式
System.out.println(mapper.findByName("shuai"));
sqlSession.commit();
//5、释放资源
destory();
}
二、新插入的数据保存到插入时的pojo类
如id自增,想获得刚刚插入的新数据的id。
利用selectKey标签实现
映射文件:
<!-- 新插入的数据保存到插入时的pojo类-->
<insert id="saveUser" parameterType="com.shuai.pojo.Bookborrow">
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
insert into user(name, pwd, permission) values (#{name},#{pwd},#{permission})
</insert>
测试类:
@Test
public void testgetIdinsert() throws IOException {
//4得到DAO接口的代理对象
init();
mapper = sqlSession.getMapper(IBookborrow.class);//代理模式
User u1 = new User("1","2","1");
mapper.saveUser(u1);
sqlSession.commit();
System.out.println(u1);//可以保存u1自增的id
//5、释放资源
destory();
}
三、封装pojo(多pojo类查询)
多个pojo类当作条件查询时,利用VO类封装多个pojo类,结合OGNL(object graphid navigation language,对象图导航语言)表达式
VO封装类:
package com.shuai.pojo;
public class QueryVo {
User user;//此例只封装一个pojo
类作为演示,实际情况可封装多个pojo类
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
映射文件:
<!-- 参数深入:将多个pojo类封装到VO类,组成一个查询条件 -->
<select id="getByVo" resultType="com.shuai.pojo.User" parameterType="com.shuai.pojo.QueryVo">
select * from mybatis.user where name like #{user.name}
<!--OGNL表达式:这里user.name,为VO封装类中的pojo类.属性-->
</select>
//参数深入:pojo包装
@Test
public void testgetVO() throws IOException {
//4得到DAO接口的代理对象
init();
mapper = sqlSession.getMapper(IBookborrow.class);//代理模式
QueryVo vo = new QueryVo();
User u1 = new User();
u1.setName("%ge%");
vo.setUser(u1);
List<User> byVo = mapper.getByVo(vo);
for(User u : byVo){
System.out.println(u);
}
sqlSession.commit();
System.out.println(u1);//可以保存u1自增的id
//5、释放资源
destory();
}
(如果帮到了你,请点个赞~)