SSM框架学习

MyBatis框架

Mybatis框架
测试步骤
第一步:读取配置文件
第二部:创建SqlSessionFactory工厂
第三步:创建SqlSession
第四步:创建Dao接口的代理对象
第五步:执行dao中的方法
第六步:释放资源

使用注解配置
1. 移除配置的映射文件
2. 在主配置文件中将resource属性修改成class属性并提供注解的接口的全限定类名
3. 在接口中写上@select(“select * from student”)

使用方法

常规使用方法

书写主配置文件(指定主配置文件的路径)
在这里插入图片描述

书写映射文件
在这里插入图片描述
最后进行进行主类书写即可。
显然这样的方式过于繁琐,我们可以使用注解的方式
在这里插入图片描述
然后我们再主配置文件中将映射文件改成注解配置的格式在这里插入图片描述
注意这里不是resources而是class了。

自己写接口实现

这里是让MyBatis帮我们实现了接口的实现类,,我们也可以自己实现这个接口 。
mapper中的namespace是为了区分不同域中的方法,有点类似java的包
id是为了找到具体的语句在这里插入图片描述
然后主测试类中的创建代理对象就可以省略了在这里插入图片描述

主测试类分析

InputStream in = Resources.getResourceAsStream("MybatisConfig.xml");
//绝对路径和相对路径一般在部署的时候不使用,
1. 使用类加载器,他只能读取类路径的配置文件
2. 使用ServletContext对象的getRealPath方法
//        创建SQLSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
构建者模式:将创建对象的细节隐藏,使用者直接通过方法即可拿到对象



//        使用工厂生产SQLSession对象
        SqlSession sqlSession = factory.openSession();
工厂模式:解耦(降低类之间的依赖关系)


//        使用SQLSession创建Dao接口的代理对象

        UserDao dao = sqlSession.getMapper(UserDao.class);
代理模式:不修改源码的基础上对已有方法增强

//        UserDaoIml userDaoIml = new UserDaoIml(factory);
//        List<User> dao = userDaoIml.findAll();

//        使用代理对象执行方法

        List<User> all = dao.findAll();

自定义MyBatis分析

MyBatis在使用代理dao的方式实现增删改查做的事。
1.创建道理对象
2.在代理对象中调用selectList方法在这里插入图片描述
连接数据库的信息,有了他们就能创建Connection对象。
在这里插入图片描述
有个这个配置信息,就有了映射的文件
在这里插入图片描述
这个文件有Sql语句,就能获取到PrepareStatement对象,还有封装的实体类的全限定类名。

读取配置文件:用到的是解析XML的技术,此处用的是dom4j解析。

  1. 根据所配置的文件信息创建Connection对象,注册驱动,获取连接
  2. 获取预处理对象PreparedStatement,此处需要Sql语句,con.preparedstatement(sql)
  3. 执行查询,ResultSet set = preparedStatement.executeQuery();
  4. 遍历结果集用于封装,这里根据映射文件对应的xml文件中的resultType中的信息可以使用反射创建对象,然后进行封装
  5. 将封装好的list进行返回

要想让上述方法执行,要提供两个信息
1.连接信息
2.映射信息:1执行的sql,2.封装结果的全限定类名。这两个信息组合起来封装为一个对象在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值