前面一篇文章实现了用户登录验证:springboot + thymeleaf +interceptor实现用户登录验证
今天接着上一篇文章,接入mybatis,实现员工管理系统的增删改查功能。
本文前端静态资源:bootstrap静态资源页面
首先贴一下maven配置:
<?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.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cpown</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</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-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--webjar 引入jquery-->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置文件:
#数据库连接配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/yao?autoReconnect=true&failOverReadOnly=false;useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
#关闭thymeleaf缓存
spring.thymeleaf.cache=false
#sql日志打印级别 com.cpown.demo.mapper 对应的是自己的mapper.java文件存放路径
logging.level.com.cpown.demo.mapper=debug
#mybatisxml扫描
mybatis.mapper-locations=classpath:mapper/**/*.xml
#实体类
mybatis.type-aliases-package=com.cpown.demo.pojo
一、创建数据库表格以及映射文件
我们使用 mysql数据库,创建两张表格:
- 用户表 sys_user
CREATE TABLE `sys_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`name` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户名称',
`password` varchar(20) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户密码',
`email` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '邮箱',
`sex` tinyint(4) DEFAULT NULL COMMENT '性别0 女 1男',
`department_id` int(11) DEFAULT NULL COMMENT '部门id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
- 部门表 department
CREATE TABLE `department` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门id',
`department_name` varchar(255) DEFAULT NULL COMMENT '部门名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='部门表';
这里使用 maven 插件generator 生成 实体类 pojo+mapper.xml+mapper.java文件,可以参考下:
maven插件自动生成pojo以及mapper映射文件
<1> pojo实体类
toString()方法需要自己重写。
package com.cpown.demo.pojo;
public class Department {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column department.id
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column department.department_name
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
private String departmentName;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column department.id
*
* @return the value of department.id
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column department.id
*
* @param id the value for department.id
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column department.department_name
*
* @return the value of department.department_name
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
public String getDepartmentName() {
return departmentName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column department.department_name
*
* @param departmentName the value for department.department_name
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
@Override
public String toString() {
return "Department{" +
"id=" + id +
", departmentName='" + departmentName + '\'' +
'}';
}
}
package com.cpown.demo.pojo;
import java.util.Date;
public class SysUser {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.id
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.name
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
private String name;
private String password;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.email
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
private String email;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sex
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
private Byte sex;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.birth
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
private Date birth;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.department_id
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
private Integer departmentId;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.id
*
* @return the value of sys_user.id
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.id
*
* @param id the value for sys_user.id
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.name
*
* @return the value of sys_user.name
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public String getName() {
return name;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.name
*
* @param name the value for sys_user.name
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public void setName(String name) {
this.name = name;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.email
*
* @return the value of sys_user.email
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public String getEmail() {
return email;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.email
*
* @param email the value for sys_user.email
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public void setEmail(String email) {
this.email = email;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sex
*
* @return the value of sys_user.sex
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public Byte getSex() {
return sex;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sex
*
* @param sex the value for sys_user.sex
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public void setSex(Byte sex) {
this.sex = sex;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.department_id
*
* @return the value of sys_user.department_id
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public Integer getDepartmentId() {
return departmentId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.department_id
*
* @param departmentId the value for sys_user.department_id
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
public void setDepartmentId(Integer departmentId) {
this.departmentId = departmentId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "SysUser{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
", sex=" + sex +
", departmentId=" + departmentId +
'}';
}
}
<2> mapper映射文件
package com.cpown.demo.mapper;
import com.cpown.demo.pojo.Department;
import com.cpown.demo.pojo.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface DepartmentMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table department
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table department
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
int insert(Department record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table department
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
Department selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table department
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
List<Department> selectAll();
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table department
*
* @mbg.generated Tue Jul 14 20:30:14 CST 2020
*/
int updateByPrimaryKey(Department record);
List<Department> selectDepartmentByName(@Param("name")String name);
}
package com.cpown.demo.mapper;
import com.cpown.demo.dto.SysUserDto;
import com.cpown.demo.pojo.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysUserMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
int insert(SysUser record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
SysUser selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
List<SysUserDto> selectAll();
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbg.generated Tue Jul 14 20:27:59 CST 2020
*/
int updateByPrimaryKey(SysUser record);
List<SysUser> selectSysUserByName(@Param("name")String name);
}
为了前端直接展示部门名称,定义Dto查询关联部门表,直接展示部门名称:
package com.cpown.demo.dto;
import com.cpown.demo.pojo.SysUser;
/**
* 用户查询Dto
*/
public class SysUserDto extends SysUser {
private String departmentName;
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
}
<3> xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cpown.demo.mapper.DepartmentMapper">
<resultMap id