demo功能:学生信息增删改查
项目目录
1.springboot启动类
spring boot 的启动器的位置:在controler这样一些包的外面,不能同级
package com.coymaple.bootdemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@MapperScan("com.coymaple.bootdemo.mapper")
@SpringBootApplication
@EnableCaching
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
springboot整合mybatis需要加MapperScan注解扫描包
2.缓存功能
service层
@Override
@Cacheable(value="student")
public PageInfo<Student> findPage(int pageNum, int pageSize) {
// TODO Auto-generated method stub
PageHelper.startPage(pageNum,pageSize);
List<Student> list=studentMapper.findAll();
PageInfo<Student> pageinfo=new PageInfo<>(list);
return pageinfo;
}
使用注解开启缓存,但是当进行完添加或者修改之后该缓存不会改变,所以需要在添加和修改方法上面清除缓存记录
@Override
@CacheEvict(value="student",allEntries=true)
public int update(Student stu) {
// TODO Auto-generated method stub
return studentMapper.updateByPrimaryKeySelective(stu);
}
3.分页功能实现
application.properties配置
# pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.row-bounds-with-count=true
分页前端使用的jquery的分页插件 jqPaginator.js
mybatis的分页插件pagehelper
引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
controller类接受分页参数,在第一页的时候不会向controller传参,需要设置默认值
@RequestMapping("/listPage")
public ResultBean listPage(@RequestParam(name = "pageNum",required=false,defaultValue="1") int pageNum,@RequestParam(name = "pageSize",required=false,defaultValue="5") int pageSize){
PageInfo<Student> pageinfo=studentService.findPage(pageNum, pageSize);
ResultBean result=new ResultBean();
if(pageinfo!=null){
result.setCode(0);
result.setData(pageinfo);
result.setMsg("success");
}else{
result.setCode(1);
result.setMsg("fail");
}
return result;
}
分页的功能要在service层实现,因为使用了缓存,使用ehcache缓存需要ehcaceh.xml文件,并且在启动类中添加注解,如果在controller层添加缓存无法实现分页
分页前台实现:首页显示不会向后台传递参数,所以需要在controller设置默认参数
$.jqPaginator('#pagination2', {
totalPages: data.pages,
visiblePages: 5<data.pages?5:data.pages,
currentPage: data.pageNum,
prev: '<li class="prev"><a href="javascript:;">上一页</a></li>',
next: '<li class="next"><a href="javascript:;">下一页</a></li>',
page: '<li class="page"><a href="javascript:;">{{page}}</a></li>',
onPageChange: function (pageNum, type) {
//$('#p2').text(type + ':' + pageNum);
if(type=="change"){
changePageData(pageNum);
}
}
});
点击上下页触发函数
function changePageData(pageNum){
//查询全部
$.ajax({
type: "post",
url: '/student/listPage',
data: {"pageNum":pageNum},
success: function(result){
if(result.code == 0){
var data = result.data;
if(data){
$('#pagination2').jqPaginator('option', {
currentPage: data.pageNum
});
$("#studentList").children("tbody").empty();
$.each(data.list,function(i,n){
var $row = $("#rowTemplate").clone();
dataBindToElement($row,n);
$("#studentList").children("tbody").append($row);
});
}
else{
}
}
else{
if(result.returnCode == -1){
alert(result.message);
}
else{
alert("Unknow error!")
}
}
}
});
}
添加功能:
页面使用html加ajax方式,后台接受数据类型为json类型,所以需要将表单数据转化成json数据格式,传递数据为json类型时需要在ajax参数中添加:contentType : 'application/json;charset=UTF-8',
var DataDeal = {
//将从form中通过$('#refer').serialize()获取的值转成json
formToJson : function(data) {
data = data.replace(/&/g, "\",\"");
data = data.replace(/=/g, "\":\"");
data = "{\"" + data + "\"}";
return data;
}
};
var dataCollect = $('#form').serialize();
dataCollect = decodeURIComponent(dataCollect, true);//防止中文乱码
var jsondata = DataDeal.formToJson(dataCollect);//转化为json
修改功能:
html携带参数跳转,在另一个html中获得url中携带的参数
function oneValues() {
var result;
var url = window.location.search; //获取url中"?"符后的字串
if (url.indexOf("?") != -1) {
result = url.substr(url.indexOf("=") + 1);
}
return result;
}