MyBatis之设计模式学习总结

在学习MyBatis的过程中,不仅要掌握其设计理念,还需深入了解其中使用的设计模式。本文总结了在学习MyBatis时所接触到的7种设计模式,并将持续更新。

1、建造者模式(Builder模式)示例:

代码语言:javascript代码运行次数:0运行复制```javascript public class Book { private Integer id; private String name; public Book() { } public Book(Integer id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Book{" + "id=" + id + ", name='" + name + '}'; } // 使用内部类实现建造者模式 public static class Builder { private Integer id; private String name; public Builder id(Integer id) { this.id = id; return this; } public Builder name(String name) { this.name = name; return this; } public Book build() { return new Book(id, name); } } } /**

  • 通过这种方式实现了链式创建,与Lombok的@Builder注解功能类似。 */ public class BuilderTest { public static void main(String[] args) { Book book = new Book.Builder().id(1).name("三国").build(); System.out.println(book.toString()); } }

MyBatis中对Builder模式的应用不仅仅限于内部类的方式。例如:

代码语言:javascript代码运行次数:0运行复制```javascript /**

  • 根据不同的输入参数构建SqlSessionFactory工厂对象。
  • 最终会调用这个build方法,创建SqlSessionFactory的实现类 */ public class SqlSessionFactoryBuilder { public SqlSessionFactory build(Reader reader) { return build(reader, null, null); } public SqlSessionFactory build(Reader reader, String environment) { return build(reader, environment, null); } public SqlSessionFactory build(Reader reader, Properties properties) { return build(reader, null, properties); } public SqlSessionFactory build(Reader reader, String environment, Properties properties) { XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties); return build(parser.parse()); } public SqlSessionFactory build(InputStream inputStream) { return build(inputStream, null, null); } public SqlSessionFactory build(InputStream inputStream, String environment) { return build(inputStream, environment, null); } public SqlSessionFactory build(InputStream inputStream, Properties properties) { return build(inputStream, null, properties); } public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties); return build(parser.parse()); } // 最终会调用这个build方法,创建SqlSessionFactory的实现类 public SqlSessionFactory build(Configuration config) { return new DefaultSqlSessionFactory(config); } }