Mybatis原理初步理解

/**
 * SqlSessionFactory, SqlSession, 映射器:都是接口。不让我们直接new对象,目的就是为了解耦
 *      由Mybatis帮我们生成这些接口的实现类对象,如果将来要升级,只要mybaits的代码做修改即可,我们的代码不需要修改
 *
 * Mybatis涉及的设计模式,常见:
 *      构造者模式:把一个对象的复杂构造过程隐藏起来,根据配置文件定制生成需要的对象
 *      工厂模式:用于批量生产对象,目的是解耦==>Spring框架
 *      代理模式:当不能、或不方便直接操作某一对象时,就可以通过代理对象间接操作
 *
 * 
 */
public class MybatisTest {

    @Test
    public void testStart() throws IOException {
        //1.加载全局配置文件,得到InputStream
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");

        //2.创建SqlSessionFactory:
        // 构造者模式:把一个对象的复杂构造过程隐藏起来,我们就可以很方便的根据配置文件,定制生成我们需要的对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

        //3.通过工厂生产一个SqlSession(提供了操作数据库的方法)
        // 工厂模式:用于批量生产对象,目的是解耦
        SqlSession session = factory.openSession();

        //4.由session帮我们生成一个映射器接口的实现类(底层动态代理)
        // 代理模式:当我们不能直接操作某一对象时,可以通过代理对象间接操作
        UserDao dao = session.getMapper(UserDao.class);

        //操作数据库:Mybatis会根据 接口全限定类名 和 调用的方法名,去对应的映射文件里,查找对应的sql语句,然后执行sql语句
        List<User> userList = dao.queryAll();
        for (User user : userList) {
            System.out.println(user);
        }

        //5.释放资源
        session.close();
        is.close();
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值