基于Spring Boot框架的员工管理系统的设计与实现二(开源项目——实现增删改查功能整体流程超详细)
一、SpringBoot整合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里
点击确定后显示的页面:
点击登录显示页面:
回到数据库可视化页面可以看到我刚刚加的这条数据:
如果数据库里没有更新数据,那就去数据库配置里面看:
数据库名字或密码改没改
- 点赞
- 收藏
- 关注作者
评论(0)