SSM框架之_Mybatis入门笔记,详解快速上手(五):注解开发与Lombok篇。简化开发就看这里,内含干货

本文探讨了使用注解和面向接口编程的概念及其在MyBatis框架中的应用。介绍了注解的基本使用方法、SQL类型的注解及其实现方式,并对比了配置文件与注解开发的不同之处。此外还讨论了Lombok插件简化POJO类开发的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注解开发


面向接口编程

真正开发过程中大部分使用注解,mybatis大部分使用配置文件。

使用注解开发是为了更符合面向接口编程的思想。

面向接口编程,目的:解耦合。

在面向对象的系统中,系统的功能是由各种不同的对象协作完成的。对象之间相互调用,而调用的对象内部是如何实现的,对系统设计人员就不是那么的重要。

而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。


接口的理解

  • 定义(规范,约束)与实现(名实分离的原则)的分离。
  • 接口的本身反映了系统设计人员对系统的抽象理解。

三种面向之间的区别

  • 面向对象:考虑问题时,以对象为单位,考虑对象的属性和方法。

  • 面向过程编程:考虑问题时,以一个具体的流程(事务过程)为单位,考虑如何实现。

  • 接口设计与非接口设计:针对复用技术而言,更多体现的是对系统整体的架构。


使用注解开发

一些简单的sql语句,直接给接口的方法加响应的注解。

sql类型有四类,对应的由四种注解:

  • @select ()
  • @update ()
  • @Insert ()
  • @delete ()

直接在注解中写sql语句,但是注解中不能提供mybatis强大的映射功能。


使用注解开发的流程:

  1. 在接口的方法添加对应的注解
//查询全部用户
@Select("select id,name,pwd password from user")
public List<User> getAllUser();
  1. 在mybatis配置文件中绑定接口
<!--使用class绑定接口-->
<mappers>
   <mapper class="com.kuang.mapper.UserMapper"/>
</mappers>
  1. 方法测试:与之前代码相同
@Test
public void testGetAllUser() {
   SqlSession session = MybatisUtils.getSession();
   //本质上利用了jvm的动态代理机制
   UserMapper mapper = session.getMapper(UserMapper.class);

   List<User> users = mapper.getAllUser();
   for (User user : users){
       System.out.println(user);
  }

   session.close();
}

本质

本质:反射机制实现

底层:动态代理


mybatis执行流程解析

mybatis执行流程


参数注解

在接口的方法中,给每个参数都加上@param()注解,SQL注解执行时,会以param注解中的参数名为准。


@Param注解

  • 基本数据类型或者String类型需要加
  • 引用类型不需要加

#{}与${}

#{}类似于预编译,可以有效防止SQL注入。

${}不能防止SQL注入。

#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符

INSERT INTO user (name) VALUES (#{name});
INSERT INTO user (name) VALUES (?);

${} 的作用是直接进行字符串替换

INSERT INTO user (name) VALUES ('${name}');
INSERT INTO user (name) VALUES ('kuangshen');


Lombok

可以简化pojo类开发,少些许多代码,例如:有参构造、无参构造、set和get方法、tostring方法等,直接通过注解的方式实现。


使用步骤

  1. 在IDE中下载lombok插件
  2. 导入lombko的jar包
  3. 给实体类添加想要的注解

常用的注解

@Cleanup

自动调用close()方法。

@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);

会帮助自动关闭资源。

@Getter / @Setter

自动生成Getter/Setter方法。

public class GetterSetterExample {
    @Getter @Setter private int age = 10;
    @Setter(AccessLevel.PROTECTED) private String name;
}

@Data

自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter,@Setter方法。

@AllArgsConstructor

自动生成全参构造方法


@NoArgsConstructor

自动生成无参构造方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值