文章目录
一、Lombok安装(已安装的忽略)
Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,就有一个功能齐全的构建器、自动记录变量等等。
1、先在idea中安装Lombok插件
File —> Settings —> Plugins —> 搜索Lombok
2、添加lombok相关依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
二、整合Mybatis的核心依赖包
<!-- mybatis 支持 SprigBoot -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--阿里巴巴数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!--MyBatis Plus 的依赖包 ,比如可以直接使用他封装好的sql语句,selectOne等-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
三、springboot整合Mybatis
1、application.yml和项目结构
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/study-demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
2、User类
ps:表结构创建语句在最后
package com.gzgs.study01.web.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@NoArgsConstructor //无参构造函数
@AllArgsConstructor//有参构造(全字段)
@Accessors(chain = true)//链式; 存取器。通过该注解可以控制getter和setter方法的形式。
@TableName("t_user")
public class User {
@TableId(value = "user_id", type = IdType.ID_WORKER)
private Long userId;//主键
private Integer age;
private String userName;
private Date gmtCreate;//创建时间
private Date gmtModified;//修改时间
}
3、userMapper类
package com.gzgs.study01.web.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gzgs.study01.web.entity.User;
import org.springframework.stereotype.Repository;
//我们使用的@Mapper和@MapperScan并不是spring框架的注解,未在spring容器中注册为bean;
//@Repository标签可加可不加,不加的话@Autowired的时候会爆红而已,因为@MapperScan不是spring框架的注解
public interface UserMapper extends BaseMapper<User> {
}
4、@MapperScan注解
@MapperScan("com.gzgs.study01.web.mapper")
四、单元测试
//一般都会在service层调用mapper
//这里直接使用mapper封装好的selectOne方法查询
User user = userMapper.selectOne(new QueryWrapper<User>().eq("user_id", 1));
五、表创建语句
/*
Navicat MySQL Data Transfer
Source Server : 本地数据库3306
Source Server Type : MySQL
Source Server Version : 50735
Source Host : localhost:3306
Source Schema : study-demo
Target Server Type : MySQL
Target Server Version : 50735
File Encoding : 65001
Date: 04/07/2023 17:20:54
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`user_id` bigint(20) NOT NULL,
`age` int(3) NULL DEFAULT NULL,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (1, 18, '测试用户', '2023-07-03 18:09:53', '2023-07-04 14:43:30');
INSERT INTO `t_user` VALUES (2, 20, '测试用户2', '2023-07-04 15:10:03', '2023-07-04 15:10:03');
SET FOREIGN_KEY_CHECKS = 1;