11_PROJECT_DAY02_1109

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测试类,编写并执行单元测试:

关于在IDEA中装配持久层接口对象时,使用@Autowired默认报错的解决方案:

  • 改为使用@Resource注解;
  • 配置@Autowired的注解参数为required=false,即:@Autowired(required=false)
  • 在接口之前添加@Repository注解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值