第三课(spring-boot+mybatis+jqgrid)

课程目标完成与spring boot 与的mybatis的集成处理数据curd课程计划使用mybatis完成博客后台管理员列表的jqgird搜索课程分析想要完成列表的搜索,就必须对sql按提交搜索条件进行逻辑判断组织sql,也就是动态sql步骤1.加入依赖// build.gradledependencies { 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”)}2. 配置mybatisspring: 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.model3. 使用mybatis mapper// model/AdminMapper@Mapperpublic 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);}4.编写动态sql语句// service/AdminServiceimport 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(); }}5.使用mybatis查询方法 // 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 这么用合理么? ...

April 7, 2019 · 2 min · jiezi

JqGrid 自定义搜索filterModel中sopt写法

JqGrid 自定义搜索从源码中找答案在用JqGrid写自定义搜索的时候,搜索字段为select 时候,选项sopt 这个咋写都不对,一怒之下查看了这块源码如下if ($t.sopt.value) { var oSv = $t.sopt.value; var elem = document.createElement(“select”); $(elem).attr({ name: $t.index || $t.name, id: “sg_” + $t.name }).attr($t.sopt); var so, sv, ov; if (typeof oSv === “string”) { so = oSv.split(";"); for (var k = 0; k < so.length; k++) { sv = so[k].split(":"); ov = document.createElement(“option”); ov.value = sv[0]; ov.innerHTML = sv[1]; if (sv[1] == $t.defval) { ov.selected = “selected”; } elem.appendChild(ov); } } else if (typeof oSv === “object”) { for (var key in oSv) { if (oSv.hasOwnProperty(key)) { i++; ov = document.createElement(“option”); ov.value = key; ov.innerHTML = oSv[key]; if (oSv[key] == $t.defval) { ov.selected = “selected”; } elem.appendChild(ov); } } }}sopt 的两种写法有源码可知:sopt有两种写法当sopt为字符串的时候写法为{value : “1:已使用;0:未使用”}当sopt为对象的时候写法为 sopt: {value :{’’:‘全部’,1:‘已使用’,0:‘未使用’,2:‘使用中’,3:‘已过期’}},官网wiki ...

March 29, 2019 · 1 min · jiezi