项目前期准备--MyBaitsPlus、MyBatisPlusGenerator和Spring Security(2)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 项目前期准备--MyBaitsPlus、MyBatisPlusGenerator和Spring Security(2)

1. 项目前期准备–MyBaitsPlus


MyBatisPlus是基于MyBatis的基础之上的,它可以自动生成常规的数据访问,使得开发人员在使用时不需要自行编写那些每张表都会有常规数据访问功能,例如插入数据、根据id删除数据等。


先创建数据库straw:


CREATE DATABASE straw;


并使用该数据库:


USE straw;


然后创建用户数据表,便于接下来访问数据:


CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) UNIQUE NOT NULL COMMENT '用户名',
  `nickname` varchar(20) NULL COMMENT '昵称',
  `password` char(68) NOT NULL COMMENT '密码',
  `gender` int(1) COMMENT '性别',
  `day_of_birth` date COMMENT '生日',
  `phone` varchar(20) COMMENT '电话号码',
  `class_id` int(11) COMMENT '所属班级id',
  `created_time` datetime COMMENT '注册时间',
  `enabled` int(1) COMMENT '账号是否可用,0-否,1-是',
  `locked` int(1) COMMENT '账号是否锁定,0-否,1-是',
  `type` int(1) COMMENT '0-学生,1-老师',
  `self_introduction` varchar(255) COMMENT '自我介绍',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


接下来,还要创建与数据表对应的实体类,在blog-user模块项目中,在根包cn.tedu.blog.user下创建model子包,并在这个子包中创建实体类User:


package cn.tedu.blog.user.model;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class User {
    private Integer id;
    private String username;
    private String nickname;
    private String password;
    private Integer gender;
    private LocalDate dayOfBirth;
    private String phone;
    private Integer classId;
    private LocalDateTime createdTime;
    private Integer enabled;
    private Integer locked;
    private Integer type;
    private String selfIntroduction;
}


在使用MyBatisPlus之前,需要MyBatisPlus的依赖,由于当前案例只是演示这个效果,所以相关依赖添加在父项目或blog-user子模块项目中都是可以的:


<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>


同时,还需要添加MySQL的依赖:


<dependency>

   <groupId>mysql</groupId>

   <artifactId>mysql-connector-java</artifactId>

</dependency>


然后,还需要在application.properties中配置连接数据库的配置信息:


spring.datasource.url=jdbc:mysql://localhost:3306/straw?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai

spring.datasource.username=root

spring.datasource.password=root


当配置完成后,应该及时测试,以保证数据库连接的配置是正确的:


@Autowired
DataSource dataSource;
@Test
void getConnection() throws SQLException {
    Connection conn = dataSource.getConnection();
    log.debug("conn > {}", conn);
}

如果需要使用Druid或其它数据库连接池,需要先添加相关依赖:


<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.23</version>
</dependency>


然后在application.properties中配置使用Druid连接池:


spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.druid.initial-size=2

spring.datasource.druid.max-active=5


当需要使用MyBatisPlus时,应该在项目的根包中创建mapper子包(非必须),并在这个子包下创建UserMapper接口,该接口需要继承自MyBatisPlus提供的BaseMapper接口,在继承时,泛型为实体类的类型:


package cn.tedu.blog.user.mapper;
import cn.tedu.blog.user.model.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Repository
public interface UserMapper extends BaseMapper<User> {
}



与使用MyBatis相同,需要在配置类中添加@MapperScan注解来配置接口文件所在的包:
package cn.tedu.blog.user;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("cn.tedu.blog.user.mapper")
public class BlogUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(BlogUserApplication.class, args);
    }
}


至此,MyBaitsPlus就已经可以正常使用了,在BaseMapper接口中已经定义了许多数据访问功能,并且,MyBatisPlus会自动完成这些数据访问功能对应的SQL语句,如果不需要自定义其它的方法时,是可以直接使用的!


假设需要向用户表中插入新的用户数据,就可以直接使用BaseMapper中已经定义好的insert()方法。


在blog-user模块项目的src/test/java下创建cn.tedu.blog.user.mapper.UserMapperTests测试类,编写并执行单元测试:

package cn.tedu.blog.user.mapper;
import cn.tedu.blog.user.model.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@Slf4j
public class UserMapperTests {
    @Autowired
    UserMapper mapper;
    @Test
    void insert() {
        User user = new User();
        user.setUsername("root");
        user.setPassword("1234");
        int rows = mapper.insert(user);
        log.debug("rows={}", rows);
    }
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
WXM
|
3月前
|
Java 应用服务中间件 Maven
|
3月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
1天前
|
Java Spring
ij社区版如何创建spring项目
如何在IntelliJ IDEA社区版中创建Spring项目,包括安装Spring Boot Helper插件的步骤和创建过程。
7 1
ij社区版如何创建spring项目
|
3月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
3月前
|
安全 Java 数据库
实现基于Spring Security的权限管理系统
实现基于Spring Security的权限管理系统
|
3月前
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
7天前
|
存储 NoSQL Java
Spring Boot项目中使用Redis实现接口幂等性的方案
通过上述方法,可以有效地在Spring Boot项目中利用Redis实现接口幂等性,既保证了接口操作的安全性,又提高了系统的可靠性。
9 0
|
14天前
|
Java Spring
spring boot 启动项目参数的设定
spring boot 启动项目参数的设定
|
2月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
42 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
2月前
|
前端开发 JavaScript Java
spring boot+vue前后端项目的分离(我的第一个前后端分离项目)
该博客文章介绍了作者构建的第一个前后端分离项目,使用Spring Boot和Vue技术栈,详细说明了前端Vue项目的搭建、后端Spring Boot项目的构建过程,包括依赖配置、数据库连接、服务层、数据访问层以及解决跨域问题的配置,并展示了项目的测试结果。
spring boot+vue前后端项目的分离(我的第一个前后端分离项目)