springboot集成mybatis-plus示例

配置pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.ps</groupId>
  <artifactId>SPRINGBOOT_PL</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.17.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
      <dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.2</version>
		</dependency>
		<dependency>
		        <groupId>com.baomidou</groupId>
		        <artifactId>mybatis-plus-boot-starter</artifactId>
		        <version>3.0.5</version>
   		</dependency>
 </dependencies>
 	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<uriEncoding>UTF-8</uriEncoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
  
</project>

控制层com.pshi.controlier

package com.pshi.controlier;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;

import com.pshi.entity.Emp;
import com.pshi.entity.Result;
import com.pshi.service.EmpService;
@RestController
public class EmpContrilier{
    @Autowired
	private EmpService service;   
    @GetMapping(value="/emps")
	public Result listEmp(String ename ,String sal, String page, String limit){
		try {
            Result pb=service.queryEmp(ename,sal,page,limit);
			return pb;
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return null;
	}
	@PostMapping(value="/emp")
	public Result addEmp(Emp emp){
	    Result r=new Result();
		try{

            service.saveEmp(emp);
		}catch (Exception e){
            r.setCode(1);
            r.setMsg("新增失败"+e.getMessage());
        }


		return r;
	}
    @DeleteMapping(value="emp/{empno}")
    public Result delEmp(@PathVariable String empno) {
        Result r=new Result();

        try{

            service.deleteEmp(empno);
        }catch (Exception e){
            r.setCode(1);
            r.setMsg("删除失败"+e.getMessage());
        }
        return r;
    }
	@PutMapping(value="emp/{empno}")
	public Result updateEmp(@PathVariable String empno, @Valid Emp emp) {
		Result r=new Result();
		emp.setEmpno(empno);
		try{
			service.updateEmp(emp);
		}catch (Exception e){
			r.setCode(1);
			r.setMsg("修改失败"+e.getMessage());
		}
		return r;
	}
}

写一个属性类配合mysql的数据表com.pshi.entity

package com.pshi.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("emps")
public class Emp {
	
	@TableId(type=IdType.AUTO)
	private String  empno;
	
	@TableField("ename")
	private String  ename;
	
	private String  job;


    private  String sal;


	private  String email;

  
	private String phone;



	public String getEmpno() {
		return empno;
	}

	public void setEmpno(String empno) {
		this.empno = empno;
	}

	public String getEname() {
		return ename;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

    public String getSal() {
        return sal;
    }

    public void setSal(String sal) {
        this.sal = sal;
    }

    public String getEmail() {
		return email;
	}


	public void setEmail(String email) {
		this.email = email;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

}

写一个属性类配合mybatis-plus进行分页com.pshi.entity

package com.pshi.entity;

import java.util.List;

public class Result {

    private  int  code;

    private  String msg;

    private  int  count;
    private List data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public List getData() {
        return data;
    }

    public void setData(List data) {
        this.data = data;
    }
}

定义一个接口com.pshi.mapping

package com.pshi.mapping;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pshi.entity.Emp;
@Mapper
public interface Mapping extends BaseMapper<Emp>{
}

逻辑层接口

package com.pshi.service;
import com.pshi.entity.Emp;
import com.pshi.entity.Result;
public interface EmpService {

	public Result queryEmp(String ename,String sal, String curPage, String pageNum) throws Exception;

	void saveEmp(Emp emp);

	void deleteEmp(String empno);

	void updateEmp(Emp emp);
}

逻辑层实现

package com.pshi.service.imp;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pshi.entity.Emp;
import com.pshi.entity.Result;
import com.pshi.mapping.Mapping;
import com.pshi.service.EmpService;
@Service
public class EmpServceImp implements EmpService {
	
	@Autowired
	private Mapping mapping;
	public Result queryEmp(String ename , String sal,String  curPage, String  pageNum) throws Exception{
		if(StringUtils.isEmpty(curPage)) {
			curPage="1";
		}
		if(StringUtils.isEmpty(pageNum)) {
			pageNum="10";
		}
		if(StringUtils.isEmpty(ename)) {
			ename="";
		}
		if(StringUtils.isEmpty(sal)) {
			sal="";
		}
		int curPageIn=Integer.parseInt(curPage);
		int  pageNumIn=Integer.parseInt(pageNum);
		QueryWrapper<Emp> qw=new QueryWrapper();
		
		qw.like("ename",ename);
		qw.like("sal", sal);
		
		
		IPage<Emp> pageDate=mapping.selectPage(new Page(curPageIn,pageNumIn), qw);
		Result r=new Result();
		r.setCode(0);
		r.setCount((int)pageDate.getTotal());
		r.setData(pageDate.getRecords());
		return r;
	}

	public void saveEmp(Emp emp) {
		mapping.insert(emp);
	}

	public void deleteEmp(String empno) {
		mapping.deleteById(empno);
	}

	public void updateEmp(Emp emp) {
		mapping.updateById(emp);
	}
}

配置一个bean进行分页

package com.pshi.conf;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class ConfBean {
	 @Bean
	    public PaginationInterceptor paginationInterceptor() {
	        return new PaginationInterceptor();
	    }

}

配合分页查询的工具类

package com.pshi.utils;

import java.util.List;

/**
 * 分页的帮助类
 * 
 *时间 2018年10月20日 下午3:49:53
 * @param <T>
 */
public class PageBean<T> {

	/*
	 * 当前页查询的默认当前页=1
	 * 页面传递的参数
	 */
	private int   curPage;

	/*
	 * 上一页
	 * 根据当前页计算
	 * curPage=1 prPage=1
	 * curPage>1 curPage=curPage-1
	 *
	 */
	private int prePage;
	/*
	 * 下一页
	 * curPage=totalPage nextPage=totalPage
	 * curPage<totalPage nextPage=curPage+1
	 *
	 */
	private int  nextPage;

	/*
	 * 每页显示条数据 默认十条
	 * 页面传递的参数
	 */
	private int  pageNum=10;


	/*
	 * 总共多少页
	 * 总条数 total/每页显示条数 pageNum
	 *
	 * total%pageNum==0?total/pageNum:total/pageNum+1
	 *
	 */
	private int   totalPage;

	/*
	 * 总共多少条数据
	 * 数据库查询
	 */
	private  int  total;

	/*
	 * 开始的索引
	 *
	 */
	private  int startIndex;



	public int getStartIndex() {
		return startIndex;
	}

	public void setStartIndex(int startIndex) {
		this.startIndex = startIndex;
	}

	/*
	 * 承载当前页的数据
	 */
	private   List<T> data;
	/**
	 * 构造方法
	 * @param curPage 上一页
	 * @param pageNum 每页显示条数
	 * @param total 总条数
	 */
	public PageBean(int curPage,int pageNum,int total) {
		//计算上一页
		this.prePage=(curPage==1?1:curPage-1);
		//计算总页数
		this.totalPage=(total%pageNum==0?total/pageNum:total/pageNum+1);
		//计算下一页
		this.nextPage= this.totalPage==0?curPage:(curPage==totalPage?totalPage:curPage+1);
		//开始的索引
		this.startIndex=(curPage-1)*pageNum;

		this.total=total;

		this.curPage=curPage;

		this.pageNum=pageNum;

	}

	public int getCurPage() {
		return curPage;
	}

	public void setCurPage(int curPage) {
		this.curPage = curPage;
	}

	public int getPrePage() {
		return prePage;
	}

	public void setPrePage(int prePage) {
		this.prePage = prePage;
	}

	public int getNextPage() {
		return nextPage;
	}

	public void setNextPage(int nextPage) {
		this.nextPage = nextPage;
	}

	public int getPageNum() {
		return pageNum;
	}

	public void setPageNum(int pageNUm) {
		this.pageNum = pageNUm;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public List<T> getData() {
		return data;
	}

	public void setData(List<T> data) {
		this.data = data;
	}

	public  void   calc (){

	}


}

前端在项目中导入layui jquery-3.3.1.js

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="resource//layui/css/layui.css"/>
    <script src="resource/layui/layui.js"></script>
    <script src="jquery-3.3.1.js"></script>
    <script type="text/html" id="barDemo">
  		<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
		<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
	</script>
    <script>
        layui.use('form',function () {
            var form=layui.form;
            form.on('submit(myFrom)', function(data){
                layui.table.reload('myEmpTable', {
                    url: 'emps'
                    ,where:data.field

                });
                return false;
            });


            form.on('submit(addForm)', function(data){
                $.ajax({

                    url:'emp',
                    dataType:'json',
                    data:data.field,
                    type:'post',
                    success:function (da) {
                        if(da.code==0){
                            layer.close(addWindow);
                            alert("新增成功");
                            layui.table.reload('myEmpTable', {
                                url: 'emps'
                            });

                        }else {
                            alert(da.msg);
                        }
                    }

                });

                return false;
            });

           form.on('submit(updateForm)',function (data) {
               data.field["_method"]="put";
                $.ajax({
                    url:'emp/'+data.field.empno,
                    dataType:'json',
                    data:data.field,
                    type:'post',
                    success:function (da) {
                        if(da.code==0){
                            layer.close(addWindow);
                            alert("修改成功");
                            layui.table.reload('myEmpTable', {
                                url: 'emps'
                            });

                        }else {
                            alert(da.msg);
                        }
                    }
                });

                return false;

            });

        });
        layui.use('table', function(){
            var table = layui.table;
            table.render({
                elem: '#myEmpTable'
                ,height: 312
                ,width:'100%'
                ,url: 'emps' //数据接口
                ,page: true //开启分页
                ,cols: [[ //表头
                    {field: 'empno', title: '员工编号', width:200, sort: true, fixed: 'left'}
                    ,{field: 'ename', title: '员工姓名', width:200}
                    ,{field: 'job', title: '员工职位', width:200, sort: true}
                    ,{field: 'email', title: '员工邮箱', width:200}
                    ,{field: 'phone', title: '手机号码', width: 200}
                    ,{field: 'sal', title: '员工薪资', width: 200, sort: true}
                    ,{fixed: 'right', width:180, align:'center', toolbar: '#barDemo'}
                    
                ]]
            });
            table.on('tool(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
          	  var data = obj.data; //获得当前行数据
          	  var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
          	  var tr = obj.tr; //获得当前行 tr 的DOM对象
          	 
  	          if(layEvent === 'edit'){ //编辑
  	        	/*  var  source=JSON.parse(data); */
 	             alert(data)
 	            
 	            layui.use('layer',function () {
 	                addWindow=layer.open({
 	                    type: 1,
 	                    area: ['500px', '400px'],
 	                    content: $("#updateForm")
 	                });

 	            });
 	           layui.form.val("updateForm",data)
  	          }else if(layEvent === 'del'){
  	        	 $.ajax({
  	                url:'emp/'+data.empno,
  	                dataType:'json',
  	                data:{
  	                  "_method":"delete"
  	                },
  	                type:'post',
  	                success:function (da) {
  	                    if(da.code==0){
  	                        alert("删除成功");
  	                        layui.table.reload('myEmpTable', {
  	                            url: 'emps'
  	                        });

  	                    }else {
  	                        alert(da.msg);
  	                    }
  	                }
  	            });
  	          }
          	  
          	});

        });
       
        var  addWindow=null;
        function empAdd() {
            layui.use('layer', function () {
                addWindow = layer.open({
                    type: 1,
                    area: ['500px', '400px'],
                    content: $("#addForm")
                });
            });
        }
      
        
        function empDelete(empno) {
           
        }

    </script>

</head>
<body>
<form class="layui-form" action="">
    <div class="layui-inline">
        <label class="layui-form-label"></label>
        <div class="layui-input-inline" style="width: 200px;">
            <input type="text" name="ename" placeholder="请输入姓名"  autocomplete="off" class="layui-input">
        </div>
        <label class="layui-form-label"></label>
        <div class="layui-input-inline" style="width: 200px;">
             <input type="text" name="sal" placeholder="请输入薪资" autocomplete="off"class="layui-input" >
        </div>
        <div class="layui-inline" style="width:200px">
            <button class="layui-btn"  lay-submit lay-filter="myFrom">查询</button>
          	<!-- <input class="layui-btn" /> -->
            <a href="javascript:empAdd()" class="layui-btn">新增</a>
        </div>
    </div>
</form>
    <table id="myEmpTable" lay-filter="test"></table>

</body>
</html>

<!--新增表单-->
<form id="addForm" class="layui-form" style="display:none">
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工姓名</label>
        <div class="layui-input-block">
            <input type="text" name="ename" lay-verify="required"  placeholder="请输入姓名" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工职位</label>
        <div class="layui-input-block">
            <input type="text" name="job"  placeholder="请输入职位" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工邮箱</label>
        <div class="layui-input-block">
            <input type="text" name="email" lay-verify="email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">手机号码</label>
        <div class="layui-input-block">
            <input type="text" name="phone" lay-verify="phone" placeholder="请输入手机号码" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工薪资</label>
        <div class="layui-input-block">
            <input type="text" name="sal" lay-verify="number" placeholder="请输入薪资" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="addForm">立即提交</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>

</form>


<!--修改表单-->
<form id="updateForm" class="layui-form"  lay-filter="updateForm" style="display:none">
    <input type="hidden" name="empno" id="empno">
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工姓名</label>
        <div class="layui-input-block">
            <input type="text" name="ename"  lay-verify="required"  placeholder="请输入姓名" autocomplete="off" class="layui-input">
        </div>

    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工职位</label>
        <div class="layui-input-block">
            <input type="text" name="job" placeholder="请输入职位" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工邮箱</label>
        <div class="layui-input-block">
            <input type="text" name="email"  lay-verify="email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">手机号码</label>
        <div class="layui-input-block">
            <input type="text" name="phone"  lay-verify="phone" placeholder="请输入手机号码" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item" style="width: 400px">
        <label class="layui-form-label">员工薪资</label>
        <div class="layui-input-block">
            <input type="text" name="sal"  lay-verify="number" placeholder="请输入薪资" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="updateForm">立即提交</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>

</form>

猜你喜欢

转载自blog.csdn.net/qq1765911750/article/details/84592056