0
点赞
收藏
分享

微信扫一扫

SpringBoot+Mybatis-Plus的使用

年夜雪 2022-02-11 阅读 58

SpringBoot+Mybatis-Plus的使用

创建项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UroGMhMQ-1644579894961)(C:\Users\violetmuzi\AppData\Roaming\Typora\typora-user-images\image-20220211192541108.png)]

添加springweb、lombook、mysql driver、jdbc api、thymeleaf

创建package包:

controller

写注解@Controller

package cn.kgc.lh.controller;

import cn.kgc.lh.dao.PersonMapper;
import cn.kgc.lh.pojo.Person;
import com.alibaba.fastjson.JSON;
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.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author: violetmuzi
 * @date: 2022/2/11
 * @description:
 */
@Controller
public class PersonController {
    @Resource
    private PersonMapper personMapper;
    @RequestMapping("/index")
    public String index(){
        return "index";
    }
    @RequestMapping("/page")
    @ResponseBody
    public String page(@RequestParam Integer currentPage, @RequestParam Integer pageSize){
        Page<Person> page=new Page<Person>(currentPage,pageSize);
        QueryWrapper qw = new QueryWrapper();
        qw.orderByDesc("id");
        IPage<Person>iPage=personMapper.selectPage(page,qw);
        return JSON.toJSONString(iPage);
    }
    @RequestMapping("/add")
    public String add() {
        return "add";
    }

    @PostMapping("/save")
    @ResponseBody
    public boolean add(@ModelAttribute Person person) {
        int insert = personMapper.insert(person);
        System.out.println(insert);
        if (insert > 0) {
            return true;
        }
        return false;
    }
    @RequestMapping("/del")
    @ResponseBody
    public  boolean del(@RequestParam int id){
        int del= personMapper.deleteById(id);
        System.out.println(del);
        if (del > 0) {
            return true;
        }
        return  false;
    }
}

启动类CompanyApplication

写注解@MapperScan(“dao的路径”) //扫描Mapper文件

package cn.kgc.lh;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("cn.kgc.lh.dao")
public class CompanyApplication {

    public static void main(String[] args) {
        SpringApplication.run(CompanyApplication.class, args);
    }

}

pojo

注解@TableId(type = IdType.AUTO) 方便id自增的排序

package cn.kgc.lh.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author: violetmuzi
 * @date: 2022/2/11
 * @description:
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    @TableId(type = IdType.AUTO)
    private int id;
    private String name;
    private int gender;
    private int age;
    private int rank;
    private String department;
}

dao(Mapper)

写接口继承BaseMapper //BaseMapper<>中封装着很多常用的方法

package cn.kgc.lh.dao;

import cn.kgc.lh.pojo.Person;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @author: violetmuzi
 * @date: 2022/2/11
 * @description:
 */
public interface PersonMapper extends BaseMapper<Person> {
}

utils(工具包放(MybatisPlusConfig)工具类)方便调用

package cn.kgc.lh.utils;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: violetmuzi
 * @date: 2022/2/11
 * @description:
 */
@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor page(){
        return new PaginationInterceptor();
    }
}

3.pom.xml文件添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>cn.kgc</groupId>
    <artifactId>company</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>company</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!--添加依赖的开始 —————————————————————————————————— -->
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>
        <!--mybati-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

编写application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/companydb //数据库路径
    username: root
    password: 698511 //数据密码
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl //输出日志用

分页页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>人员列表</title>
		<script src="js/jquery-3.6.0.min.js"></script>
		<script src="js/index.js"></script>

	</head>
	<body onload="pageInfo()">
		<table border="1" align="center" width="1000" class="table-page">
			<tr style="background: chartreuse">
				<td colspan="7">
					<h2 align="center">人员列表</h2>
				</td>
			</tr>
			<tr style="background: chartreuse">
				<th>序号</th>
				<th>姓名</th>
				<th>性别</th>
				<th>年龄</th>
				<th>等级</th>
				<th>部门</th>
				<th>操作</th>
			</tr>
			<!-- 第1行 -->
			<tr align="center" style="background: chocolate">
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<!-- 第2行 -->
			<tr align="center"  style="background: chartreuse">
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<!-- 第3行 -->
			<tr align="center" style="background: chocolate">
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>

		</table>
		
			<h5 style="text-align: center">
				<a href="javascript:void(0)" onclick="start()">首页</a>&nbsp;&nbsp;&nbsp;
				<a href="javascript:void(0)" onclick="prev()">上一页</a>&nbsp;&nbsp;&nbsp;
				<a href="javascript:void(0)" onclick="next()">下一页</a>&nbsp;&nbsp;&nbsp;
				<a href="javascript:void(0)" onclick="end()">尾页</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				<span class="showPage">第1页/共1页</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				 <button onclick="jump()">添加人员</button>
			</h5>
		
	</body>
</html>

添加页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>添加人员</title>
		<style>
			.red {
				color: red;
			}
		</style>
		<script src="js/jquery-3.6.0.min.js"></script>
		<script src="js/add.js"></script>
	</head>
	<body>
		<h1 align="center" style="background: aqua">添加人员</h1>
		<table border="1" align="center" width="400" height="300">
			<tr style="background: chartreuse">
				<td>姓名:</td>
				<td>
					<input type="text" class="cname"> <span class="red">*</span>
				</td>
			</tr>
			<tr style="background: aqua">
				<td>性别:</td>
				<td>
					<select class="gender">
						<option value="-1">请选择</option>
						<option value="0">男</option>
						<option value="1">女</option>
					</select>
					<span class="red">*</span>
				</td>
			</tr>
			<tr style="background: chartreuse">
				<td>年龄:</td>
				<td><input type="text" class="age"></td>
			</tr>
			<tr style="background: aqua">
				<td>等级:</td>
				<td>
					<select class="rank">
						<option value="-1">请选择</option>
						<option value="1">1级</option>
						<option value="2">2级</option>
						<option value="3">3级</option>
						<option value="4">4级</option>
						<option value="5">5级</option>
					</select>
					<span class="red">*</span>
				</td>
			</tr>
			<tr style="background: chartreuse">
				<td>部门:</td>
				<td>
					<select class="department">
						<option value="-1">请选择</option>
						<option value="开发部">开发部</option>
						<option value="支持部">支持部</option>
						<option value="工程质量部">工程质量部</option>
					</select>
					<span class="red">*</span>
				</td>
			</tr>
			<tr style="background: aqua">
				<td colspan="2" align="center">
					<button onclick="save()">保存</button>
					&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					<a href="/index">返回查询</a>
				</td>
			</tr>
		</table>
		
	</body>
</html>

js文件

别忘了引入jquery-3.6.0.min.js

index.js

var currentPage = 1;
var totalPage = 1;
var pageSize = 3;
var totalCount = 0;

function pageInfo() {
    //清空
    $(".table-page tr:gt(0) td").html("&nbsp;");
    //声明json串,并赋值
    let jsonA = {
        currentPage: currentPage,
        pageSize: pageSize
    };
    $.ajaxSettings.async = false;
    $.getJSON("page",jsonA,function (dataA) {
        console.log(dataA);
        //总条数
        totalCount = dataA.total;
        //总页数
        totalPage = dataA.pages;
        //渲染数据
        $(dataA.records).each(function (i, v) {
            console.log(v);
            let sex=""
            if(v.gender==0){
                sex="男";
            }else {
                sex="女";
            }
            $(".table-page").find("tr").eq(i + 2).find("td").eq(0).text((currentPage-1)*pageSize+i+1);
            $(".table-page").find("tr").eq(i + 2).find("td").eq(1).text(v.name);
            $(".table-page").find("tr").eq(i + 2).find("td").eq(2).text(sex);
            $(".table-page").find("tr").eq(i + 2).find("td").eq(3).text(v.age);
            $(".table-page").find("tr").eq(i + 2).find("td").eq(4).text(v.rank+"级");
            $(".table-page").find("tr").eq(i + 2).find("td").eq(5).text(v.department);
            $(".table-page").find("tr").eq(i + 2).find("td").eq(6).html("<a onclick='del("+v.id+")' href='javascript:void(0)'>删除</a>");
        })
    })
    $.ajaxSettings.async = true;
    showPage();
}

//展示页码
function showPage() {
    $(".showPage").text("第" + currentPage + "页 / 共" + totalPage + "页");
    if(currentPage>totalPage){
        currentPage--;
        pageInfo();
    }
}

// /下一页

function next() {
    currentPage++;
    if (currentPage > totalPage) {
        currentPage = totalPage;
        return;
    }
    pageInfo();
}


//上一页
function prev() {
    currentPage--;
    if (currentPage < 1) {
        currentPage = 1;
        return;
    }
    pageInfo();
}

//首页
function start() {
    currentPage = 1;
    pageInfo();
}

//尾页
function end() {
    currentPage = totalPage;
    pageInfo();
}
function jump() {
  location.href="/add";
}
function del(id) {
    let a= confirm("确定要删除吗?")
    if (a==false){
        return;
    }
    $.ajaxSettings.async = false;
    $.post("/del","id="+id,function (data) {
        if (data==true){
            alert("删除成功!")
            return;
        }else {
            alert("删除失败!")
            return;
        }
    })
    const totalPage = Math.ceil((this.count - 1) / this.pageSize) // 总页数
    this.currentPage = this.currentPage > totalPage ? totalPage : this.currentPage
    this.currentPage = this.currentPage < 1 ? 1 : this.currentPage

    $.ajaxSettings.async = true;
    pageInfo();
}




add.js

function save() {

    var name=$(".cname").val();
    var gender=$(".gender").val();
    var age=$(".age").val();
    var rank=$(".rank").val();
    var department =$(".department").val();
    function boo() {
        let reg=/^(?:[1-9][0-9]?|1[01][0-9]|120)$/;//年龄是1-120之间有效
        if (name == "") {
            alert("必须填写联系人姓名");
            return false;
        } else if (gender<0) {
            alert("请选择性别!");
            return false;
        } else if (!reg.test(age)){
            alert("请正确填写年龄!");
            return false;
        }else if (rank<0) {
            alert("请选择等级!");
            return false;
        } else if (department==-1) {
            alert("请选择部门!");
            return false;
        }
        return  true;
    }
    let json={
        name:name,
        gender:gender,
        age:age,
        rank:rank,
        department:department
    };
    var bo=boo();
    console.log(bo);
    console.log(json);
    $.ajaxSettings.async=false;
    $.post("/save",json,function (data) {
        console.log(data)
        if (data == true&&bo== true){
            alert("添加成功")
        }else{
            alert("添加失败")
        }
    });

    $.ajaxSettings.async=true;


}

目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5zhqFEA-1644579894963)(C:\Users\violetmuzi\AppData\Roaming\Typora\typora-user-images\image-20220211193404144.png)]

实现了简单的分页查询功能、添加和删除功能

    return false;
    }
    return  true;
}
let json={
    name:name,
    gender:gender,
    age:age,
    rank:rank,
    department:department
};
var bo=boo();
console.log(bo);
console.log(json);
$.ajaxSettings.async=false;
$.post("/save",json,function (data) {
    console.log(data)
    if (data == true&&bo== true){
        alert("添加成功")
    }else{
        alert("添加失败")
    }
});

$.ajaxSettings.async=true;

}


目录结构

[外链图片转存中...(img-k5zhqFEA-1644579894963)]

**实现了简单的分页查询功能、添加和删除功能**

**如有错误,请斧正。**
举报

相关推荐

0 条评论