1、#{}和${} 区别
#{}:表示占位符(不可以写成 '#{}'),如果传入的值是一个简单类型(int,String),#{}获得的就是传入的参数值,如果传入的是一个pojo或者hashmap,那么#{}获得的就是这个相应的属性值(例如,传入一个User,#{id},就相当于user.id)
${}:字符串拼接(容器引起sql注入,不建议使用),如果传入参数是一个简单类型,就就必须写成 ${value},否做就是获取传入参数的属性值。
#{name},当传入一个user对象,调用的是user.getName(),所以user对象中需要有getName()方法,即使没有name这个字段。
2、Mybatis如何分页
public String vedioAuth(@ModelAttribute("qo") XxxxQueryObject qo, Model model)
qo:封装了分页查询的筛选条件
作用1:用于表单的回显
作用2:用户sql查询的where语句判断。
分页的核心就是写SQL语句 LIMIT 查询
1、我们可以封装一个查询对象(筛选条件,查询页[用来计算startpage],每页多少条数据等[可以有前端传入,或者使用固定值]),传入mapper中,找到我们需要的数据
2、我们可以封装一个返回对象(查询页,总页数,data数据),传入前端页面。
前端页面需要传入筛选条件,和需要查询的页数(limit是根据(currentPage-1)*pagesize),后端的pagesize是固定的10(也可以从前端传入),当currentPage是1,表示从筛选的结果中选0,10条数据,如果currntPage是4,就是第四页(limit 40,50)
3、返回HashMap
List<Map<String, Object>> autocomplate(String keyword);
<select id="autocomplate" resultType="hashmap"> SELECT id,username FROM logininfo WHERE username LIKE concat(#{keyword},'%') </select>