MyBatis⑦注解开发、Lombok

1、*注解开发

1.1、说明

MyBatis 实际开发中,建议使用 XML 配置文件。

注解开发了解即可。

  • 底层实现反射、动态代理
  • 注解开发
    • 简单 SQL:注解会使代码更加简洁。
    • 复杂 SQL:注解会使代码非常混乱,不如 XML 配置。
  • 注解和 XML 配置
    • 注解:在接口方法上添加注解,编写 SQL 语句,耦合度高,维护性差。
    • XML:通过映射绑定接口和方法,分离 Java 代码和 SQL,利于维护。

开发步骤

  1. 编写 Mapper 接口,在 MyBatis 核心配置文件中注册。
  2. 编写接口方法,添加注解和 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 等结构。

image-20210727150433743

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()。

    image-20210727151133174

posted @ 2021-07-28 23:41  Jaywee  阅读(73)  评论(0编辑  收藏  举报

👇