Spring Boot 整合 MyBatis
1、创建 Spring Boot 工程。
2、pom.xml 引入相关依赖。
3、配置 application.yml 数据源。
4、创建实体类、接口,Java 代码。
5、启动类进行扫包,pom.xml 配置 resources。
常见问题:
1、单词拼写错误
2、忘记配置(启动类扫包、pom.xml 配置 resources)
3、注解名称 @MapperScan,不能使用 @ComponentScan
Spring Boot 整合 Thymeleaf
视图层的解析技术,
为啥不使用 JSP,使用原生的 HTML
步骤:
1、创建 Spring Boot 工程。
2、pom.xml 引入相关依赖。
3、配置 application.yml 视图解析器(.html)。
4、创建 HTML(templates/static)
5、常用标签。
MyBatis Plus
国产的框架,基于 MyBatis,在 MyBatis 框架的基础上做了一个二次封装,让代码开发变得更加简单。
让你可以写更少的代码来实现更多的功能。
使用 MyBatis Plus,几乎不用写代码,就可以实现一个基于 Web 的 CRUD 操作。
Controller、Service、Repository、Entity
具体操作
1、创建 Spring Boot 工程。
2、引入依赖。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
3、创建实体类
package com.test.entity;
import lombok.Data;
@Data
public class User {
private Integer id;
private String name;
private String pwd;
private Integer money;
}
4、只需要创建 Mapper 接口,不需要定义任何方法。
MP 已经封装好了常用的方法,直接使用即可。
继承
package com.test.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.test.entity.User;
public interface UserMapper extends BaseMapper<User> {
}
5、启动类中扫描接口。
package com.test;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.test.mapper")
public class SpringbootmybatisplusApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootmybatisplusApplication.class, args);
}
}
6、进行单元测试
package com.test;
import com.test.entity.User;
import com.test.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class SpringbootmybatisplusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void list() {
List<User> users = this.userMapper.selectList(null);
for (User user : users) {
System.out.println(user);
}
}
@Test
void findById(){
User user = this.userMapper.selectById(12);
System.out.println(user);
}
@Test
void save(){
User user = new User();
user.setName("MP");
user.setPwd("123");
user.setMoney(100);
int insert = this.userMapper.insert(user);
System.out.println(insert);
}
@Test
void update(){
User user = this.userMapper.selectById(12);
user.setName("小明");
int i = this.userMapper.updateById(user);
System.out.println(i);
}
@Test
void delete(){
System.out.println(this.userMapper.deleteById(12));
}
}
常用注解
@TableName
用来设置表名,当实体类名称和表名冲突的时候,用来做映射的。
@TableName("user")
public class Account {
将 Account 和 user 表进行了映射
@TableId
用来设置主键
IdType 枚举
AUTO(0):数据库自增,无论开发者是否传值,都是自增
NONE(1):默认的方式,由 MP 自动生成一个 Long 随机数作为 ID 传入
INPUT(2):开发者手动赋值,如果你不赋值,传入 Null,数据库不会存 Null,采用自增
ASSIGN_ID(3):用雪花算法生成一个随机数
ASSIGN_UUID(4):生成UUID,宇宙唯一标识,字符串
@TableField
用来设置普通字段
value 设置实体类成员变量名称和字段名的映射
select 设置查询的时候是否要加上当前字段
exist 设置 CURD 的时候是否要加上当前字段
|