版本:
java:1.8
Maven:3.6+
MySQL:5.7
IDEA:2019(Ultimate)
SpringBoot:2.1.7(严格 springboot 版本不同,代码不同)
1. 创建SpringBoot应用:
方式一:IDEA
配置 Maven
在pom中修改springboot版本
改后重新导入maven依赖
测试运行
方式二:Spring官网
方式三:Maven
1.2 结构要优雅,执行要高效
2. Mybatis 三剑客
Mybatis是一款数据库持久层框架
为什么选用Mybatis而不用Jpa
Jpa是技术趋势,Mybatis是国内现状(选框架注意大环境)
2.1 XML vs 注解
1、官网导入Mybatis依赖
2、引入MySQL依赖
因为Mybatis只是一个持久层框架,要连接数据库必须要有对应的驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
不需要加版本,因为spring-boot-starter-parent
已经定义好了版本(此处为springboot的优点之一,省配置)但是要注意MySQL软件的版本(5.7)
确保导入:按住 ctrl 点击 artifactid 中的 id -> 若能进入则导入成功
3、配置数据库
重命名 -> 更改格式
下划线 -> 驼峰命名:
2.1.1 Mybatis 注解使用(了解)
1、pojo类
package com.imooc.mall.pojo;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import java.util.Date;
/**
* @description:
* po(persistent object):持久层的对象 数据库表映射过来的对象
* pojo(plian ordinary java object):只有属性,get、set方法的普通java对象 范围包含po
* @author: Dixinkk
* @create: 2022-03-13 15:26
*/
public class Category {
private Integer id;
private Integer parentId;
private String name;
private Integer status;
private Integer sortOrder;
private Date createTime;
private Date updateTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getSortOrder() {
return sortOrder;
}
public void setSortOrder(Integer sortOrder) {
this.sortOrder = sortOrder;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "Category{" +
"id=" + id +
", parentId=" + parentId +
", name='" + name + '\'' +
", status=" + status +
", sortOrder=" + sortOrder +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
2、dao
测试:
IDEA 快捷输入:
categoryMapper.findById(100001).var
@Test
void contextLoads() {
Category category = categoryMapper.findById(100001); //-> categoryMapper.findById(100001).var
System.out.println(category.toString());
}
测试结果
小技巧①:@MapperScan 代替 @Mapper
主类下:@MapperScan()
按住 ctrl + p
可以查看提示
小技巧②:IDEA配置(节省时间)
1、Maven项目自动导入
若自动导入不生效则手动导入:
2、自动导包
注:存在多个包时无法自动导入,需要手动选择
3、lombok
加注解 -> @Data
4、修改日志输出格式
2.1.2 Mybatis XML使用(熟练掌握)
新建Mapper文件夹 -> 存放xml
此处
resultType
的Category的位置写错了,应改为:com.imooc.mall.pojo.Category
否则报错:找不到 Category类
参考文档
错误①:Invalid bound statement (not found)
–> 未告诉程序 Mapper 文件夹位置
规范①:替换 select *
规范②:专门的测试类
ctrl + shift + t
小技巧③:用继承减少注解
2.2 Mybatis-generator
代码自动生成
开发生成器:连接数据库 -> 获取表结构 -> 生成文件
1、官方文档
Maven pom.xml 配置
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
</plugin>
注意版本:不同版本操作不同
2、终端(IDEA terminal 即可 - IDEA提供的快捷终端)输入mvn mybatis-generator:generate
报错
2、resources
下新建 generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry location="D:\BC\Java exe\mysql-connector-java-5.1.6.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/mall?characterEncoding=utf-8"
userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage="com.imooc.mall.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.imooc.mall.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="mall_order" />
</context>
</generatorConfiguration>
terminal 运行mvn mybatis-generator:generate
自动生成:
发现名字多了Mall
改进:
<table tableName="mall_order" domainObjectName="Order"/>
再改进 -> 生成时自动覆盖
小技巧④:去掉Mybatis-generator自动生成的注释
注意:commentGenerator 顺序
小技巧⑤:不再追加xml内容
2.3 Mybatis-plugin
快速查找 dao中函数 -> mapper中的SQL
2.4 Mybatis-PageHelper
https://github.com/abel533/MyBatis-Spring-Boot
分页
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
代码中只需加一句话
PageHelper.startPage(pageNum, pageSize);