SpringBoot整合MybatisPlus
阿新 • • 發佈:2018-12-11
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