mybatis入门案例中的设计模式分析

4 篇文章 0 订阅
1 篇文章 0 订阅

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值