目录
前言
刚开始工作,接触到新的项目,学习新的工具。使用的技术主要是Spring的一些内容,一些好用的开源软件也需要学习使用,有时间再去研究其开发的一些思想、技巧。
新的开发工具IDEA
老实说,Eclipse还没用得很精通,又要开始用新的工具了,这工具还不便宜。(不过网上有一些破解的方法,作为学习还是可以的)。
1.1 安装
然后,根据网上的安装教程安装就就可以了。
1.2 基本配置
1.2.1 maven仓库配置
- 下载maven,并且在maven的配置文件中修改:
- 下载的镜像地址(一般国内为阿里云)
- 由于C盘可能空间不够,修改本地仓库的位置
- 在IDEA的全局配置中,设置maven :idea-全局默认maven配置
- 在maven的Runner→VM options,加上
-DarchetypeCatalog=local
可能可以加快新项目的构建速度:解决IntelliJ IDEA 创建Maven项目速度慢问题 - 其他基础配置,比如编码UTF-8的配置,以后遇到再说。
1.2.2 数据库配置
- 首先,要下载数据库,一般现在常用的关系型数据库是MySQL
- 下载教程(注意网速):mysql8.0.13下载与安装图文教程
- 数据库图形化工具:Navicat等
- IDEA中配置mysql数据库:IntelliJ IDEA配置连接MySQL数据库
- user表建立(来自MyBatis-Plus官网)
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
IDEA创建SpringBoot项目
- 学习JAVA的途径很多,这个MybatisPlus学习笔记,就是基于B站的公开课系列:【狂神说Java】MyBatisPlus最新完整教程通俗易懂
狂神的公众号上有笔记 - 另外,Mybatis-Plus官方主页,也有参考文档可以查找学习。
- 这里主要就是记录一些,学习中容易出错,遗忘的步骤
2.1 创建SpringBoot项目
2.1.1创建 项目&模块
- 新建项目,则会打开一个新的IDEA窗口;
- 新建模块,则会在同一个项目下创建
2.1.2 新建项目过程
2.1.3 会出现的问题
- 新项目构建速度比较慢
- 新项目一些依赖包冲突、缺失
- JDK版本问题
MyBatis-Plus
3.1 导入依赖
<!--mybatis-puls依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!--mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok依赖 比较好用-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
3.2 application.yml
3.2.1 配置DataSource
- mysql7以上版本,注意设置时区
# Datasource Config
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3308/mybatis?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT
username: 你的用户名
password: 密码
- 如果使用的是mysql5版本,则这样配:
# Datasource Config
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3308/mybatis?characterEncoding=UTF-8
username: 你的用户名
password: 密码
3.3 建立包结构
3.3.1 pojo包
- 写实体类
- 在实体类的私有属性上,加上不同注解,完成其功能
package com.stu.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data // 不用写get,set方法
@AllArgsConstructor
@NoArgsConstructor
public class User {
// 主键自动生成
@TableId(type = IdType.AUTO)// auto是自增
private Long id;
private String name;
private Integer age;
private String email;
@Version //乐观锁相关
private Integer version;
// 插入时自动填充
@TableField(fill = FieldFill.INSERT)// 自动填充
private Date createTime;
// 插入修改时自动填充
@TableField(fill = FieldFill.INSERT_UPDATE)// 自动填充
private Date updateTime;
}
3.3.2 mapper包
- 简单的CRUD,只需要写mapper接口,不必写***mapper.xml文件
- 需要继承BaseMapper,记住不要忘记泛型中的实体类
package com.stu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.stu.pojo.User;
import org.springframework.stereotype.Repository;
@Repository //持久层注解
public interface UserMapper extends BaseMapper<User> {
}
3.3.3 handler包
- 自动填充创建时间与修改时间
package com.stu.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j //日志功能
@Component //告诉spring这是一个组件
public class MyMetaObjectHandler implements MetaObjectHandler {
// 插入时自动填充策略
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill....");
//MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("createTime", new Date(), metaObject);
log.info("start update fill....");
this.setFieldValByName("updateTime", new Date(), metaObject);
}
// 更新时自动填充策略
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill....");
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
3.3.4
- 启动类,别忘记加
@MapperScan("com.stu.mapper")
package com.stu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.stu.mapper")
public class MybatisPlus2Application {
public static void main(String[] args) {
SpringApplication.run(MybatisPlus2Application.class, args);
}
}