内容简介:想要完成列表的搜索,就必须对sql按提交搜索条件进行逻辑判断组织sql,也就是动态sql1.加入依赖
课程目标
- 完成与spring boot 与的mybatis的集成处理数据curd
课程计划
- 使用mybatis完成博客后台管理员列表的jqgird搜索
课程分析
想要完成列表的搜索,就必须对 sql 按提交搜索条件进行逻辑判断组织sql,也就是动态sql
步骤
1.加入依赖
// build.gradle
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.boot:spring-boot-devtools")
// JPA Data (We are going to use Repositories, Entities, Hibernate, etc...)
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
// Use MySQL Connector-J
compile 'mysql:mysql-connector-java'
// 使用mybatis
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2")
developmentOnly("org.springframework.boot:spring-boot-devtools")
testCompile("junit:junit")
}
- 配置mybatis
spring:
jpa:
hibernate:
ddl-auto: update
datasource:
url: jdbc:mysql://localhost:3306/db_sptest?useSSL=false
username: mysqluser
password: mysqlpwd
mvc:
static-path-pattern: /static/**
mybatis:
type-aliases-package: hello.model
- 使用mybatis mapper
// model/AdminMapper
@Mapper
public interface AdminMapper {
//使用注解方式
@Select("SELECT * FROM ADMIN WHERE name = #{name} LIMIT 1")
Admin findByName(String name);
@Select("SELECT * FROM ADMIN WHERE id = #{id}")
Admin findById(Integer id);
//动态sql
@SelectProvider(type = AdminService.class,method = "selectAdminLike")
List<Admin> findBySearch(Admin admin);
//动态sql 返回行数
@SelectProvider(type = AdminService.class,method = "countAdminSearch")
@ResultType(Integer.class)
int countBySearch(Admin admin);
}
// service/AdminService
import org.apache.ibatis.jdbc.SQL;
public class AdminService {
// With conditionals (note the final parameters, required for the anonymous inner class to access them)
public String selectAdminLike(Admin admin) {
return new SQL() {{
SELECT("A.name,A.email,A.id");
FROM("ADMIN A");
if (admin.getName() != null) {
WHERE("A.name = '" + admin.getName() + "'");
}
if (admin.getEmail() != null) {
WHERE("A.email = " + admin.getEmail());
}
}}.toString();
}
public String countAdminSearch(Admin admin){
return new SQL() {{
SELECT("count(*)");
FROM("ADMIN A");
if (admin.getName() != null) {
WHERE("A.name = '" + admin.getName() + "'");
}
if (admin.getEmail() != null) {
WHERE("A.email = " + admin.getEmail());
}
}}.toString();
}
}
// AdminController
@GetMapping(path = "get_list")
@ResponseBody
public DataResponse<Admin> getAdminList(
Admin adminReq,
@RequestParam(defaultValue = "1", value = "page") String page,
@RequestParam(defaultValue = "10", value = "rows") String rows) {
String total; //页数
List<Admin> admin_list;
int records;
records = adminMapper.countBySearch(adminReq);
int pageSize = Integer.valueOf(rows);
total = Integer.toString((records + pageSize - 1) / pageSize);
DataResponse<Admin> response = new DataResponse<>();
admin_list = adminMapper.findBySearch(adminReq);
response.setTotal(total);
response.setRows(admin_list);
response.setPage(page);
response.setRecords(records);
return response;
}
课程成果
- 完成使用jqgrid+spring boot+mybatis 的数据列表搜索
- 遗留page 和 pageSize 的传参控制,下节课对代码进行稍微的改动就可以支持
- 目前使用了jpa的Hibernate entity 这么用合理么?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
垃圾回收算法手册:自动内存管理的艺术
Richard Jones、Eliot Moss、Antony Hosking / 王雅光、薛迪 / 机械工业出版社 / 2016-3 / 139
在自动内存管理领域,Richard Jones于1996年出版的《Garbage Collection:Algorithms for Automatic Dynamic Memory Management》可谓是一部里程碑式的作品。接近20年过去了,垃圾回收技术得到了非常大的发展,因此有必要将该领域当前最先进的技术呈现给读者。本书汇集了自动内存管理研究者和开发者们在过去50年间的丰富经验,在本书中......一起来看看 《垃圾回收算法手册:自动内存管理的艺术》 这本书的介绍吧!