1. 程式人生 > >SpringBoot整合MybatisPlus

SpringBoot整合MybatisPlus

springBoot啟動程式

    package cn.ps;
  
    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.
Bean; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; //集成了Controller和ResponseBody @RestController @SpringBootApplication public class SpringBootStart { //SpringBoot整合mybatisPlus無分頁,需加此函式 @Bean
public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); return paginationInterceptor; } //執行測試 @GetMapping("/") public String test(){ return "好人一生平安"; }
//注:執行專案只需啟動springBoot,只掃描該類所在包及子類,無xml檔案,配置檔案只有一個application.properties public static void main(String[] args) throws Exception { SpringApplication.run(SpringBootStart.class, args); } }

Controller層

package cn.ps.contro;

import java.sql.SQLException;
import javax.validation.Valid;
import cn.ps.bean.Result;
import cn.ps.bean.UserBean;
import cn.ps.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;

@RestController
@SpringBootApplication
public class UserContoller {

	@Autowired
	UserService us;
	//返回自定義Result類,返回json字串,初始化及條件查詢函式
	@GetMapping(value="userServlet")
	public Result userList(UserBean userBean, String page, String limit) throws SQLException {
		return us.queryUser(userBean,page,limit);
	}

	//springboot繼承了get|post|put|delete+Mapping四個方法註解
	@PostMapping(value="addUser")
	public Result addUser(UserBean userBean) {
		Result r=new Result();
		try {
			us.addUser(userBean);
		}catch (Exception e){
			r.setCode(1);
			r.setMsg("新增出錯"+e.getMessage());
		}
		return r;
	}

	//Rest風格路徑引數獲取用@PathVariable,若名字不同,則需定義名字@PathVariable("key")
	@DeleteMapping(value="delUser/{userId}")
	public Result delUser(@PathVariable String userId){
		Result r=new Result();
		try {
			us.delUser(userId);
		}catch (Exception e){
			r.setCode(1);
			r.setMsg("刪除出錯"+e.getMessage());
		}
		return r;
	}

	@PutMapping(value="updateUser/{userId}")
	public Result updateUser(@PathVariable String userId,@Valid UserBean userBean, Errors er, Model mod){
		Result r=new Result();
		try {
			us.updateUser(userBean,userId);
		}catch (Exception e){
			r.setCode(1);
			r.setMsg("修改出錯"+e.getMessage());
		}
		return r;
	}
}

Service層

package cn.ps.service.ServImpl;

import cn.ps.bean.Result;
import cn.ps.bean.UserBean;
import cn.ps.mapper.UserMapper;
import cn.ps.service.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.SQLException;

@Service
public class UserServiceImpl implements UserService {
	@Autowired
	private UserMapper userMapp;

	@Override
	public Result queryUser(UserBean userBean, String curPage, String pageOfNum) throws SQLException {
		int curPageIn=StringUtils.isNotEmpty(curPage)&& !"0".equals(curPage) ? Integer.parseInt(curPage) : 1;
		int pageOfNumIn= StringUtils.isNotEmpty(pageOfNum) ? Integer.parseInt(pageOfNum) : 10;

		//查詢方法使用該物件
		QueryWrapper<UserBean> qw=new QueryWrapper<>();

		//QueryWrapper類中封裝的方法like,eq,and,gt... ,
		// isNotEmpty方法返回false則該sql忽略本條件查詢
		qw.like(StringUtils.isNotEmpty(userBean.getUserName()),"userName", userBean.getUserName());
		qw.eq(StringUtils.isNotEmpty(userBean.getUserAge()),"userAge",userBean.getUserAge());
		//從IPage中獲取結果集引數
		IPage<UserBean> ipage=userMapp.selectPage(new Page<>(curPageIn,pageOfNumIn),qw);
		
		Result r=new Result();
		r.setCode(0);
		r.setCount((int)ipage.getTotal());
		r.setData(ipage.getRecords());
		return r;
	}
	//增刪改都是Mapper繼承的父類BaseMapper中的方法,可帶條件
	@Override
	public void addUser(UserBean userBean) {
		userMapp.insert(userBean);
	}

	@Override
	public void delUser(String userId) {
		userMapp.deleteById(userId);
	}
	//屬性類已定義主鍵userId,自動設為修改條件
	@Override
	public void updateUser(UserBean userBean,String userId) {
		userMapp.updateById(userBean);
	}
}

mapper 介面

package cn.ps.mapper;

import cn.ps.bean.UserBean;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

//mybatisPlus 單表sql全部省略
@Mapper
public interface UserMapper extends BaseMapper<UserBean> {
	
}

Result查詢結果容器

package cn.ps.bean;

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;
    }
}

屬性類

package cn.ps.bean;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Range;
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("users")
public class UserBean {
	//標記userId為主鍵
	@TableId(type=IdType.AUTO,value="userId")
	private String userId;

	//有駝峰名字都需要加 TableField 註解,否則找不到欄位
	@TableField("userAge")
	@Range(min=0,max=150,message = "年齡不合法")
	private String userAge;
	
	@Pattern(regexp="男|女",message = "性別型別錯誤")
	private String sex;
	
	@NotBlank(message = "使用者名稱不能為空")
	@TableField("userName")
	private String  userName;
	
	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserAge() {
		return userAge;
	}

	public void setUserAge(String userAge) {
		this.userAge = userAge;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "UserBean [userId=" + userId + ", userAge=" + userAge + ", sex=" + sex + ", userName=" + userName + "]";
	}
	
	
}

頁面資訊

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>userList</title>
    <link rel="stylesheet" href="layui/css/layui.css" />
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript" src="layui/layui.js"></script>
    <script type="text/javascript">
        layui.use('form', function() {
            var form=layui.form;
            form.on('submit(myForm)', function (data) {
                data.field.page=1;
                layui.table.reload("userTable",{
                    url:"userServlet",
                    where:data.field
                })
                return false;
            });
            form.on('submit(addForm)', function (data) {
                $.ajax({
                    url:"addUser",
                    dataType:"json",
                    data:data.field,
                    type:'post',
                    success:function (da) {
                        if (da.code==0){
                            alert("新增成功");
                            layer.close(addWindow);
                            layui.table.reload("userTable",{
                                url:"userServlet"
                            })
                        } else{
                            alert(da.msg);
                        }
                    }
                })
                return false;
            });
            form.on('submit(updaForm)', function (data) {
                data.field["_method"]="put";
                $.ajax({
                    url:"updateUser/"+data.field.userId,
                    dataType:"json",
                    data:data.field,
                    type:'post',
                    success:function (da) {
                        if (da.code==0){
                            alert("修改成功");
                            layer.close(addWindow);
                            layui.table.reload("userTable",{
                                url:"userServlet"
                            })
                        } else{
                            alert(da.msg);
                        }
                    }
                })
                return false;
            });
        });
        layui.use('table', function() {
            var table = layui.table;
            table.render({
                elem: '#userTable'
                , height: 465
                , width:'100%'
                , url: 'userServlet' //資料介面
                , page: true //開啟分頁
                , cols: [[ //表頭
                    {field: 'userId', title: '編號', width: 200, sort: true, fixed: 'left'}
                    , {field: 'userName', title: '姓名', width: 200}
                    , {field: 'sex', title: '性別', width: 200, sort: true}
                    , {field: 'userAge', title: '年齡', width: 200}
                    , {field: 'aa', title: '操作', width: 200 ,sort:true, templet:function (d) {
                            return "<input type='button' onclick='toDelete("+d.userId+")' class='inline-block layui-btn' value='刪除'>" +
                                "<input type='button' onclick='toUpdate()' datas='"+JSON.stringify(d)+"' class='inline-block layui-btn' value='修改'>";
                        }}
                ]]
            });
        });
        var addWindow=null;
        function  toAdd(){
            layui.use('layer', function