在学习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); } } } /**
MyBatis中对Builder模式的应用不仅仅限于内部类的方式。例如:
代码语言:javascript代码运行次数:0运行复制```javascript /**
onfigBuilder 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);
}
}