mybatis入门案例中的设计模式分析
代码如下:
public class MyBatisTest {
public static void main(String[] args) throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMacpConfig.xml");
//2.创建SqlSessionFactory工厂
//使用 SqlSessionFactoryBuilder 创建 SqlSessionFactory 的好处,就是不用去关注创建工厂的细节,非常方便。
SqlSessionFactoryBuilder bulider = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = bulider.build(in);
//3.使用工厂生产SqlSession对象
SqlSession sqlSession = factory.openSession();
//4.使用SqlSession对象创建Dao接口的代理对象
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for (User user : users) {
System.out.println(user);
}
//6.释放资源
sqlSession.close();
in.close();
}
}
构建者设计模式
概念解释:现在盘了一块地要去盖楼盘,这个时候,如果自己去做,要考虑工人,盖楼所需要的材料,工具,施工车等等,非常麻烦。此时一般我们会把这些事情统统都承包给包工队,让包工队去做这些事情。
代码分析:
在生产工厂的时候 SqlSessionFactory factory = bulider.build(in); 就使用到了构建者模式,其中 in 表示的就是包工队概念。
-----------
构建者模式:
把对象插件的细节隐藏;
优势:让使用者直接调用方法即可拿到对象;
工厂模式
概念解释:要生产一辆汽车,如果自己做的话,要考虑,汽车零件,工人,场地等等,今天有了工厂,只要告诉工厂要做什么类型汽车,只要用工厂中的某个功能就可以创建了一辆自己想要的汽车,非常的方便和人性化。
代码分析:
SqlSessionFactoryBuilder bulider = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = bulider.build(in);
在生产 SqlSession的时候 SqlSession sqlSession = factory.openSession(); 使用了工厂模式。
-----------
工厂模式:
优势:解耦(降低了类之间的依赖关系)。
-----------
代理模式
概念解释:比如小明要去买车票回家过年,发现根本买不到车票,这个时候,就去找黄牛,只需要提供乘车人基本信息以及票价和手续费,出发地和黄牛就开始帮忙抢票。这个是很多平凡人的真实写照。简洁描述就是自己想要在正规渠道买票,发现基本买不了。但是委托黄牛(代理)让他带我们去买却有很大几率买到车票。那么,这种通过增加一个 中间件 然后去进行实际操作的模式,我们一般称之为代理模式。非常的方便,非常人性化。
代码分析:
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
这个地方就使用了代理模式。
读取配置的路径分析
代码分析:InputStream in = Resources.getResourceAsStream("SqlMacpConfig.xml");
-----------
这里直接使用文件名称,读取配置文件信息。
大家都知道:
-----------
绝对路径:d:/xxx/xxx.xml
相对路径:src/java/main/xxx.xml
-----------
一般来说,上面这两种在实际项目中读取配置文件的时候,很少用,或者基本不用。理由如下:
- 绝对路径:多用在类加载器,它只能读取类路径的配置文件;
- 相对路径:使用Servlet对象的getRealPath();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。