springboot3_MyBatis与Lombok
整合MyBatis
引入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
编写mapper接口
package com.ali.springboot312mybatis.repository;
import com.ali.springboot312mybatis.bean.Vip;
import java.util.List;
public interface VipMapper {
int insertVip(Vip vip);
List<Vip> selectAllVip();
}
创建mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ali.springboot312mybatis.repository.VipMapper">
<insert id="insertVip" parameterType="Vip">
insert into t_vip(id,name,card_number,birth) values (null,#{name} ,#{cardNumber},#{birth})
</insert>
<select id="selectAllVip" resultType="Vip">
select * from t_vip
</select>
</mapper>
在idea中安装MyBatisX插件可快速生成此xml文件
编写配置文件
# 数据源配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
#MyBatis配置
# 起别名
mybatis.type-aliases-package=com.ali.springboot312mybatis.bean
# 说明mapper.xml文件位置
mybatis.mapper-locations=classpath:/mapper/*.xml
# 自动映射数据库表字段与Bean属性
mybatis.configuration.map-underscore-to-camel-case=true
其他配置
- 在springboot主入口程序类中添加指定mapper接口扫描的注解,这样就不用在mapper接口上加@mapper注解
// 指定mapper接口扫描
@MapperScan(basePackages = {"com.ali.springboot312mybatis.repository"})
@SpringBootApplication
public class Springboot312MybatisApplication {
...
}
- 创建Bean对象,Service接口、 ServiceImpl实现类 ,此时就完成了MyBatis配置。
Lombok库
Lombok是一个java库,会自动生成构造函数、getter、setter、equals、hashcode、toString方法等。
Lombok是编译阶段库,不影响程序运行。运行阶段不起作用。不影响程序执行效率。
// @Data 等价于 @ToString @Getter @Setter @EqualsAndHashCode @RequiredArgsConstructor
@Data
// 全参数构造方法
@AllArgsConstructor
// 无参数构造方法
@NoArgsConstructor
public class User {
private String name;
private int age;
private Long id;
}
高版本idea自动安装lombok插件,插件知识为了代码不报红有提示,插件不是必须得。
// 表明toString 方法不输出age属性
@ToString(exclude = {"age"})
// 表明equals方法不比较age属性
@EqualsAndHashCode(exclude = {"age"})
public class User {
private String name;
private int age;
private Long id;
}
其他常用注解
@Value
给所有属性加final,给所有属性提供getter、自动生成toString、hashcode、equals
@Value
public class User {
private String name;
private int age;
private Long id;
}
@Builder
建造模式主要解决创建对象时,参数过多的问题。目的是让创建对象过程更加清晰、灵活。
package com.ali.builder;
// 建造模式
public class Person {
private final String name;
private final int age;
private Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
// 获取建造器对象
public static PersonBuilder Builder() {
return new PersonBuilder();
}
// 静态内部类:建造器
public static class PersonBuilder {
private String name;
private int age;
public PersonBuilder withName(String name) {
this.name = name;
return this;
}
public PersonBuilder withAge(int age) {
this.age = age;
return this;
}
public Person build() {
return new Person(name, age);
}
}
}
测试一下
public class PersonTest {
public static void main(String[] args) {
Person person = Person.Builder().withAge(12).withName("jack").build();
System.out.println(person);
}
}
使用@Builder注解会自动生成符合建造器模式的代码
// 生成符合建造器模式的代码
@Builder
public class PersonLombok {
private String name;
private int age;
}
@Singular
@Singular是辅助@Builder的,当被建造的对象的属性是一个集合,使用@Singular标注这个属性,可以连续调用集合属性对应的方法完成多个元素的添加。
@Data
// 生成符合建造器模式的代码
@Builder
public class PersonLombok {
private String name;
private int age;
@Singular("addFriend")
private List<String> friends;
}
使用方法
PersonLombok personLombok = PersonLombok.builder().age(20).name("jack").addFriend("tom").addFriend("lucy").build();
@Slf4j
Lombok支持多种日志框架:@Log4j、@Slf4j、@Log4j2
@Slf4j
public class UserService {
public void saveUser() {
log.info("saveUser");
}
}
实际使用中需要引入Slf4j和logback依赖。
MyBatis逆向生成
实现逆向生成需要安装idea插件free MyBatis tool,然后使用idea链接数据库,在对应的表上右键选择mybatis-generator 设置之后即可生成对应的mapper、xml和Bean文件。

本文来自博客园,作者:NE_STOP,转载请注明原文链接:https://www.cnblogs.com/alineverstop/p/19510835
浙公网安备 33010602011771号