@Select("select * from new_ent_task")
List<Task> page();
@SelectProvider(type= TaskProvider.class, method= "pageByCondition")
List<Task> pageByCondition(@Param("taskName")String taskName);
@SelectProvider(type= TaskProvider.class, method= "pageByCondition2")
List<Task> pageByCondition2(TaskPageCondition condition);
mybatis分页查询控件pagehelper,参数不定时候需要使用@selectProvide自定义sql。
type为class,method为方法名称。如果传递对象不需要加@param参数,不然会报错
Caused by: org.apache.ibatis.binding.BindingException: Parameter 'arg0' not found. Available parameters are [condition, param1]
加入@param后会将参数转成Map<String,Object>格式,通过name或者int顺序取参数。
对应上面provide正确写法
public class TaskProvider {
public String pageByCondition(Map<String,Object> map){
StringBuilder sb = new StringBuilder("select * from new_ent_task where 1=1");
String taskName = (String)map.get("taskName");
if(!StringUtils.isBlank(taskName)){
sb.append(" and task_name like '%").append(taskName).append("%'");
}
return sb.toString();
}
public String pageByCondition2(TaskPageCondition condition){
StringBuilder sb = new StringBuilder("select * from new_ent_task where 1=1");
String taskName = condition.getTaskName();
if(!StringUtils.isBlank(taskName)){
sb.append(" and task_name like '%").append(taskName).append("%'");
}
return sb.toString();
}
}
另外针对springboot项目pagehelper配置单独的maven依赖,应该会好用点。
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
mybatis项目分享,github地址:https://github.com/zhouxiaohei/spring-boot-mybaits-demo
1、项目集成:mybatis
没有mybatis的xml配置文件,配置都在application.properties文件和entConfig中
2、分页插件:mybatis插件pagehelper
基本通用插件:tk.mybatis
3、全文由注解和provider生成灵活sql。
4、统一的control层返回值和异常处理机制。