MyBatis⑦注解开发、Lombok
1、*注解开发
1.1、说明
MyBatis 实际开发中,建议使用 XML 配置文件。
注解开发了解即可。
- 底层实现:反射、动态代理;
- 注解开发
- 简单 SQL:注解会使代码更加简洁。
- 复杂 SQL:注解会使代码非常混乱,不如 XML 配置。
- 注解和 XML 配置
- 注解:在接口方法上添加注解,编写 SQL 语句,耦合度高,维护性差。
- XML:通过映射绑定接口和方法,分离 Java 代码和 SQL,利于维护。
开发步骤
- 编写 Mapper 接口,在 MyBatis 核心配置文件中注册。
- 编写接口方法,添加注解和 SQL 语句。
1.2、CRUD
示例:UserMapper
-
Mapper 接口
public interface UserMapper { ... }
-
MyBatis 核心配置文件:使用
class
属性,而不是 resource 属性。<mappers> <mapper class="indi.jaywee.dao.UserMapper"/> </mappers>
代码示例
-
增
@Insert("INSERT INTO t_user(user_id, name, password) VALUE (#{userId}, #{name}, #{password})") int insertUser(User user);
-
删
@Delete("DELETE FROM t_user WHERE user_id = #{userId}") int deleteUserByUserId(String userId);
-
改
@Update("UPDATE t_user SET name = #{name} WHERE user_id = #{userId}") int updateUser(@Param("userId") String userId, @Param("name") String name);
-
查
@Select("SELECT * FROM t_user WHERE userId = #{userId}") User getUserById(String userId);
2、Lombok
Lombok:提供大量注解,简化开发。
自动插入构建方法、getter、setter 等结构。
2.1、常用注解
- @Setter:生成属性的 setter
- @Getter:生成属性的 getter
- @ToString:生成 toString()
- @EqualsAndHashCode:生成 equals() 和 hashcode()
@Data
:包含以上注解的功能@AllArgsConstructor
:生成有参构造函数(包含所有参数)@NoArgsConstructor
:生成无参构造函数
所有注解
@Getter @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog
@Data
@Builder
@SuperBuilder
@Singular
@Delegate
@Value
@Accessors
@Wither
@With
@SneakyThrows
@val
@var
experimental @var
@UtilityClass
2.2、使用
导入依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
示例:Person
-
代码:使用
@Data
注解@Data public class Person { private String name; private int gender; private int age; }
-
类结构:自动增加了无参构造方法、getter/setter、equals()、hashCode()、toString()。