3.利用hash技术解决以上提到的Ajax的两个缺陷比较成熟的应用举例
Gmail可以说是把Ajax技术用到了极致,Google采用hash来解决Ajax技术的两大缺陷。
作用:location是window对象的一个属性,本身也是对象类型,它的作用是用来获取文档对象的相关信息,如文档的URL地址信息。
二、location对象常用的属性:
作用:获取或设置窗口中的url地址信息
获取格式:)加载新的文档
2、)// 新的文档替换当前文档。
本文将与大家分享下location对象使用属性和方法来解析URL的实例,感兴趣的朋友可以参考下,希望对你有所帮助
本文实例讲述了JS基于Location实现访问Url、重定向及刷新页面的方法。分享给大家供大家参考,具体如下: js通过Location实现访问')" />
在我的上一篇文章中主要介绍了window对象的常用属性和screen对象:点击打开链接点击此链接可以查看 Location对象也有一系列的属性: hash:设置或返回从井号(#)开始的URL host:设置或返回主机名和当前URL的...
兼容性问题 最近在项目开发中遇到了一个问题,客户的需求是要根据URL中传入...
获取变量的值(截取等号...
IE下window.lcoation可以被重写而不重新定向,具体方法是: var location = {},然后就可以重写具体的属性了,这样会对通过js判断location带来了一定风险。 如何判断location是否被重写了?折腾了一个下午,折腾了一...
核心配置文件中注册mappers
2、编写对应的mapper中的sql执行语句
2、编写对应的mapper中的SQL执行语句
2、编写对应的mapper中的SQL执行语句
2、编写对应mapper中的sql执行语句
假设我们的实体类,数据库中的表,字段或者参数过多,我们应当考虑使用Map
对象传递参数,直接在sql中去对象的额属性即可!【parameterType=“Object”】
只有一个基本类型参数的情况下,可以直接在sql种取到!
多个参数用Map,或者注解
1、java代码执行的时候,传递通配符%%
2、在sql拼接中使用通配符!
Mybatis可以配置成适应多种环境
尽管可以配置多个环境,但是每个SQLSessionFactory实例只能选择一种环境
学会使用配置多套运行环境
连接池:这是一种使得并发web应用快速响应请求的流行处理方式。
我们可以通过properties属性来实现引用配置文件的
这些属性都是可外部配置且可动态替换的,既可以在典型的java属性文件中配置,也可以通过properties元素的子元素来传递。【db.properties】
注意:在xml中所有的配置文件必须要保持顺序
也可以指定一个包,每一个在包 domain.blog
中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author
的别名为 author
,;若有注解,则别名为其注解值。见下面的例子:
在实体类比较少的时候,使用第一种方式。
如果实体类十分多,建议用第二种扫描包的方式。
第一种可以DIY别名,第二种不行,如果非要改,需要在实体上增加注解。
这是mybatis极为重要的调整设置,他们会改变Mybatis的运行时行为。
方式二:使用class文件绑定注册
方式三:使用包扫描进行注入
生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题。
这里的每一个Mapper,就代表一个具体业务
新建一个项目,拷贝之前的,测试实体类字段不一致的情况
测试出现问题,password的值为空
如果一个数据库操作,出现了异常,我们需要排错,那么日志是最好的助手
在Mybatis中具体使用哪一日志实现,在设置中设定
4.Log4j的使用,直接测试运行查询
4、之后可在log文件夹中查看日志文件信息
不再使用SQL实现分页
之前学过面向对象编程,也学习过接口,但在真正的开发中,很多时候会选择面向接口编程。
根本原因:解耦,可拓展,提高复用,分层开发中,上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性更好
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;
而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。
本质:反射机制实现(java所有的框架都是基于反射实现的)
1、在MybatisUtils工具类创建的时候实现自动提交事物!
2、编写接口,增加注解
【注意:我们必须要将接口注册绑定到我们的核心配置文件中!】
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
5.在核心配置文件中绑定注册我们的Mapper接口或者文件
6.测试查询是否能成功!
回顾Mysql多对一查询方式:
比如:一个老师拥有多个学生
对于老师而言,就是一对多的关系
1.环境搭建,和刚才一样
什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句
利用动态SQL这一特性可以彻底拜托这种痛苦。
在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,
MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。
需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名来查询
根据作者名字和博客名字来查询博客! 如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名来查询
修改上面的SQL语句:
同理,上面的对于查询SQL语句包含where关键字,如果在进行更新操作的时候,可以使用set语句
有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用 choose 标签可以解决此类问题,类似于 Java 的 switch 语句
所谓的动态SQL,本质还是SQL语句,只是我们可以在SQL层面,去执行一个逻辑代码
有时候可能某个 sql 语句我们用的特别多,为了增加代码的重用性,简化代码,我们需要将这些代码抽取出来,然后使用时直接调用。
①、最好基于 单表来定义 sql 片段,提高片段的可重用性
小结:其实动态 sql 语句的编写往往就是一个拼接的问题,为了保证拼接准确,我们最好首先要写原生的 sql 语句出来,然后在通过 mybatis 动态sql 对照着改,防止出错。
多在实践中使用才是熟练掌握它的技巧。
1.什么是缓存【cache】?
3.什么样的数据能使用缓存?
Mybatis包含一个非常强大的查询缓存特性,他可以非常方便的顶置和配置缓存。缓存可以吉大的提升查询效率。
mybatis系统默认定义了两种缓存:一级缓存和二级缓存
一级缓存也叫本地缓存:
1、在mybatis中加入日志,方便测试结果
3、接口对应的Mapper文件
一级缓存失效的四种情况
一级缓存是SqlSession级别的缓存,是一直开启的,我们关闭不了它;
一级缓存失效情况:没有使用到当前的一级缓存,效果就是,还需要再向数据库中发起一次查询请求!
观察结果:发现发送了两条SQL语句!
结论:每个sqlSession中的缓存相互独立
观察结果:发现发送了两条SQL语句!很正常的理解
结论:当前缓存中,不存在这个数据
3、sqlSession相同,两次查询之间执行了增删改操作!
观察结果:查询在中间执行了增删改操作后,重新执行了
结论:因为增删改操作可能会对当前数据产生影响
4、sqlSession相同,手动清除一级缓存
小结:一级缓存默认是开启的,只在一次SqlSession中有效,也就是拿到连接到关闭连接这个区间段!
一级缓存相当于一个Map。
2、去每个mapper.xml中配置使用二级缓存,
官方示例=====>查看官方文档 这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新, 最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的, 因此对它们进行修改可能会在不同线程中的调用者产生冲突。第三方缓存实现–EhCache: 查看百度百科
Ehcache是一种广泛使用的java分布式缓存,用于通用缓存;
要在应用程序中使用Ehcache,需要引入依赖的jar包
在mapper.xml中使用对应的缓存即可
编写ehcache.xml文件,如果在加载时未找到/ehcache.xml资源或出现问题,则将使用默认配置。
diskStore:为缓存路径,ehcache分为内存和磁盘两级,此属性定义磁盘的缓存位置。参数解释如下: defaultCache:默认缓存策略,当ehcache找不到定义的缓存时,则使用这个缓存策略。只能定义一个。 eternal:对象是否永久有效,一但设置了,timeout将不起作用。 timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。 clearOnFlush:内存数量最大时是否清除。 LFU, Less Frequently Used,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的。如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。 LRU,Least Recently Used,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。合理的使用缓存,可以让我们程序的性能大大提升!
配置Maven静态资源过滤问题!
接口对应的Mapper映射文件
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。