基于Spring Boot框架的员工管理系统的设计与实现二(开源项目——实现增删改查功能整体流程超详细)

举报
小不点~ 发表于 2023/02/04 16:15:05 2023/02/04
【摘要】 一、SpringBoot整合MybatisMybatis简介 1、添加Mybatis的起步依赖整合MyBatis<!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter<...

一、SpringBoot整合Mybatis

Mybatis简介

1、添加Mybatis的起步依赖

整合MyBatis

<!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

添加数据库驱动坐标

<!-- MySQL连接驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2、添加数据库连接信息

application-dev.yaml中添加数据量的连接信息,因为在application.yaml中配置了active: dev,所以生产环境application-pro.yaml不用管,只需要改application-dev.yaml

代码如下(示例):

# 开发环境
spring:
  #数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/staff?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: root
    hikari:
      maximum-pool-size: 2
      minimum-idle: 2

#mybatis配置
mybatis:
  #mapper配置文件
  config-location: classpath:mybatis-config.xml
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: cn.edu.neu.springbootdemo.model

3、创建实体Bean

接下来创建model层的User实体类

第一种:创建User实体类

我用的是这种
把数据库表里的字段定义一下变量,鼠标右键生成 get、set方法,重写toString方法
在这里插入图片描述

package cn.edu.neu.springbootdemo.model;

public class  User {
	private int userid;
	private String username;
	private String password;
	private String realname;
	private String birthdate;
	private String gender;
	private String interest;
	private String degree;
	private String intro;
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getRealname() {
		return realname;
	}
	public void setRealname(String realname) {
		this.realname = realname;
	}
	public String getBirthdate() {
		return birthdate;
	}
	public void setBirthdate(String birthdate) {
		this.birthdate = birthdate;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getInterest() {
		return interest;
	}
	public void setInterest(String interest) {
		this.interest = interest;
	}
	public String getDegree() {
		return degree;
	}
	public void setDegree(String degree) {
		this.degree = degree;
	}
	public String getIntro() {
		return intro;
	}
	public void setIntro(String intro) {
		this.intro = intro;
	}
	@Override
	public String toString() {
		return "User [userid=" + userid + ", username=" + username + ", password=" + password + ", realname=" + realname
				+ ", birthdate=" + birthdate + ", gender=" + gender + ", interest=" + interest + ", degree=" + degree
				+ ", intro=" + intro + "]";
	}

}

第二种:创建User实体类

另外(为了方便使用先把lombok导入,在pom.xml中文件中加)

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

User实体类

package cn.edu.neu.springbootdemo.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data   //加了这个注解get、set方法就不用写了
@NoArgsConstructor
@AllArgsConstructor   //无参构造和全参构造可以不加
public class  User {
	private int userid;
	private String username;
	private String password;
	private String realname;
	private String birthdate;
	private String gender;
	private String interest;
	private String degree;
	private String intro;
	@Override   //重写toString
	public String toString() {
		return "User [userid=" + userid + ", username=" + username + ", password=" + password + ", realname=" + realname
				+ ", birthdate=" + birthdate + ", gender=" + gender + ", interest=" + interest + ", degree=" + degree
				+ ", intro=" + intro + "]";
	}
}

4、编写Mapper

注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中

与启动类同一级别创建mapper文件夹创建UserMapper接口
在这里插入图片描述

package cn.edu.neu.springbootdemo.mapper;

import cn.edu.neu.springbootdemo.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Mapper//使用@Mapper注解,表示这是操作数据库的mapper,SpringBoot自动扫描
//也可以在启动类里使用MapperScan("cn.edu.neu.springbootdemo.mapper")注解,参数是包名,一个效果
// Dao层,所以可以使用@Repository,当然也可以使用Component注解,不写也OK
@Repository
public interface UserMapper {

    void addUser(User user);//注册

}

5、配置Mapper映射文件

在resources文件夹下创建mapper文件夹,并创建UserMapper.xml文件
在这里插入图片描述

Mybatis中文文档官网:https://mybatis.net.cn/getting-started.html

其中:

1、namespace命名空间必须与@Mapper注解的Mapper接口的全类名一致
这里的全类名要去UserMapper.java里面去找://全类名: cn.edu.neu.springbootdemo.mapper.UserMapper
其中cn.edu.neu.springbootdemo.mapper就是第一行package后面的包
然后UserMapper是这个.java的接口名

2、xml文件名必须与@Mapper注解的接口名一致
3、标签中的 id必须与@Mapper注解的的接口中的方法名一致,且参数一致

这里需要确认:整合对应application-dev.yaml里type-aliases-package别名扫描包、mapper-locations 定义mapper位置 ,即加载Mybatis映射文件

<?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="cn.edu.neu.springbootdemo.mapper.UserMapper">
        <insert id="addUser" parameterType="User">
            insert into demo_users
            values(null,#{username},#{password},#{realname},#{birthdate},#{gender},#{interest},#{degree},#{intro})
        </insert>
</mapper>

接下来写service,定义一个UserService接口
在这里插入图片描述

@Service
public interface UserService {
    int addUser(User user);

    List<User> getUserList(User user);
}

然后对应着写接口的实现类UserServiceImpl
在这里插入图片描述

但是service.impl下的两个文件是有层级关系的,我们把UserService放在上一层
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后:
在这里插入图片描述

6、定义controller

定义service(以addUser为例) service.impl.UserServiceImpl

刚才在UserMapper.java中有个addUser注册方法,然后这个注册方法映射到UserMapper.xml里面执行了SQL语句

@Service //使用@Service注解,SpringBoot自动扫描
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper mapper;
    
    @Override
    public int addUser(User user) {
        //默认执行成功
        mapper.addUser(user);
        return 0;
    }
}

7、创建UserAction类

@Controller
@RequestMapping("/user")
public class UserAction {
      @Autowired
      private UserService userService;

      @RequestMapping("/addUser")
      public String addUser(User user, Map<String,String> m) {
          int f = userService.addUser(user);
          if (f == 0) {
              m.put("msg","注册成功");
          }
          return "login";
      }
}

现在我们运行一下看看结果
请添加图片描述

其中出生日期这里是可以选时间的,这里用了一个日期的校验,在home.html里
在这里插入图片描述

点击确定后显示的页面:
在这里插入图片描述

点击登录显示页面:
在这里插入图片描述

回到数据库可视化页面可以看到我刚刚加的这条数据:
在这里插入图片描述

如果数据库里没有更新数据,那就去数据库配置里面看:
数据库名字或密码改没改
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。