框架总结

框架总结
框架:框架就是一组组件,所谓框架就是人家封装好的半成品,我们拿来直接使用,通过一些配置文件和注解完成一些功能。

软件开发的分层问题
框架的重要性就是为了实现部分功能,主要对底层的应用平台和上一层业务逻辑进行解耦,为了软件中的“高内聚低耦合”,我们常见的MVC软件设计模式就是一种很好分层的思想。

Mybatis框架
简述:1.首先它是一个持久层的框架,他的底层就是封装好的JDBC,采用的就是ORM设计思想,我们再也不需要像配置JDBC那样繁琐,什么加载驱动啊,创建链接啊,还有返回结果释放资源等等,mybatis给我们带来的好处就是我们只需要关注sql语句本身就可以对数据库的数据进行操作了。
2.然后Mybatis可以通过xml文件还有注解的方式进行各种对数据的操作,并通过java对象,和sql中的动态参数进行映射,最终生成sql语句。
注意事项及要求:
1.xml中的文件名必须与接口中得名字保持一致。
2.他里面的标签中的namespace,写的是实体类的权限定名(包名.类名)
3.它里面的有封装好的标签,等属性标签他们里面的ID属性必须要和接口中定义的方法名称保持一致的关系。
4.里面还有resultType写的也是实体类的权限定名,还有ParamType里面写的是接口的名称,也可以写所在的包都可以。
5.查询的列名和实体类属性名称不一定时,建立对应关系,他里面的书标签实体类的权限定名。表示数据库的列名,表示实体类的列名,是一个唯一标识,用来select标签查询来使用的。
6.基于mapper映射器,基于配置文件的是里面resource属性写的是包的路径资源,记得要用/隔开。里面的class属性,写的是包的权限定名。还有第三种:它里面的name属性是注册所有包下mapper接口,注意此种方法要求mapper接口必须要和xml文件名称保持一致。
7.#{}代表占位符,相当于where条件后的?

Mybatis和JDBC比较
1.数据库的频繁创建会浪费系统资源,使用数据库连接池可以解决此问题。
然而mybatis,可以在xml文件中可以直接配置连接池对象。
2.SQL语句写在代码中不易维护和管理,如果需求较多的话,还得修改java代码,费事
mybatis就不一样了,他可以在xml文件里配置SQL语句就可以了,与java代码分离。
3.SQL语句传递参数比较麻烦,因为sql语句中where条件不一定,可多可少,占位符一定要和参数对应。mybatis自动将java对象映射成SQL语句通过paramType来输出参数类型。

配置propertise
在mybatis中,有两种方式可以配置,一种是通过xml文件来配置,它里面有个propertise标签,用来配置属性文件,另外一种就是在classpath文件下,来配置属性文件,必须是以propertise结尾的文件,里面要写键值对形式。
mybatis数据源
mybatis他有一个自带的数据源,在sqlMapConfig.xml文件里有一个dataSource标签俩配置数据源,属性:type:1.POOLED 使用连接池配置数据源,Mybatis 会创建 PooledDataSource 的对象
2.JNDI:使用 JNDI 实现数据源 Mybatis 会从 JNDI 服务上查找 DataSource 对象,然后返回使用
3.UNPOOLED:不使用连接池的数据源Mybatis 会创建 UnpooledDataSource 对象

mybatis事务和jdbc事务
1.jdbc中的事务默认是自动提交的,可以通过setAutoCommit(false)来设置手动提交,
2.mybatis框架就是对jdbc的封装,所以mybatis的事务控制也是通过setAutoCommit的方式来设置事务的提交的。但是必须注意一点,我们操作CRUD时,必须使用sqlsession.commit来提交事务。mybatis自动提交事务设置,session=factory.openSession(true); //通过这种方式,就可以设置 myabtis 为自动提交事务了。

mybatis的延迟加载
记得在我们实现一对一,多对多表查询中,会发现一次性可以把多张表的信息都给查出来,实际中我们并不需要那么多的数据,这就用到了mybatis的延迟加载。所谓延迟加载就是需要用到数据时加载,不需要就不加载,它也称为懒加载。可以实现延迟加载。
同时也可以在一对多表中使用配置延迟加载,它里面也有colunm和select属性。
好处:先从一张表查询,需要时再从关联表查询,提高了数据库的性能,因为查询单表比查询多表要快很多。
缺点:当需要大量数据时,这样大批量查询,会造成查询时间比较长,用户体验性不是很好。

mybatis缓存
几乎所有的ORM框架都有缓存技术,mybatis也提供了缓存策略,通过减少对数据库的访问次数,从而提高性能。mybatis分为一级缓存和二级缓存。
1.一级缓存是sqlsession缓存,只要sqlsession没有刷新或者关闭它就有效。如果我们进行两次或者多次查询时候,但是最后只执行了一次数据库操作,这就是mybatis给我们提供的一级缓存作用,正是一级缓存的存在,当我们在查询id=2的数据时,并没有发出SQL语句,只是从一级缓存中获取相应数据,然后将数据在发送到数据库。
如果第一次查询id=2的信息,首先他会去缓存中找,看有没有id=2的数据,如果没有就从数据库查询用户信息,得到信息后,就会将用户信息存到缓存中。然后使用sqlsession去执行commit操作,每次保证数据都是最新的,这样避免脏读问题。如果缓存中有id=2的数据,直接从缓存中获取用户信息的数据。
3.二级缓存指的是mapper缓存,多个sqlsession去执行一个mapper映射的sql语句。但是多个sqlsession也可以当做二级缓存,二级缓存是跨sqlsession的。开启二级缓存的标签 注意事项:缓存的实体类一定要实现序列化接口

mybatis常用注解
 @Insert:实现添加
 @Update:实现修改
 @Delete:实现删除
 @Select:实现查询
 @Result:实现结果集的封装
 @Results:可以与@Result 一起使用,封装多个结果集
 @ResultMap:实现引用@Results 定义的封装
 @One:一对一结果封装
 @Many:一对多结果封装
 @CacheNamespace:二级缓存
 @SelectProvider:实现动态 SQL 映射

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值