Mybatis----面试

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>

  

  

原文地址:https://www.cnblogs.com/yanxiaoge/p/11674962.html