2.装配Bean:在XML中显式配置、在Java的接口和类中实现配置、隐式Bean的发现机制和自动装配原则,引入相应XML定义.装配简易值、装配集合
3.spring提供了对应的命名空间的定义,只是在使用命名空间的时候要先引入对应的命名空间和XML模式(XSD)文件
4.在使用XML定义时,无论使用原始配置,还是使用命名空间定义都允许。
5.通过注解装配Bean、约定优于配置开发原则
6.在Spring中,它提供了两种方式来让Spring IoC容器发现Bean。
1)组件扫描:通过定义资源的方式,让Spring IoC容器扫描对应的包,从而把Bean装配进来。
2)自动装配:通过注解定义,使得一些依赖关系可以通过注解完成
7.正常执行SQL的逻辑步骤:
1)打开通过数据库连接池获取数据库连接资源,并做一定的设置工作
2)执行对应的SQL语句,对数据进行操作
3)如果SQL执行过程中发生异常,回滚事务
4)如果SQL执行过程中没有发生异常,最后提交事务
5)到最后的阶段,需要关闭一些连接资源
8.Spring AOP设计:打开获取数据连接在before方法中完成,打开SQL,按照读者的逻辑会采用反射的机制调用,如果发生异常,则回滚事务;如果没有发生异常,则提交事务,然后关闭数据库连接资源。9.Spring AOP使得对于开发者而言更为关注业务开发,而不是资源控制、事务异常处理,这些AOP框架都可以完成。 使用@AspectJ注解开发Spring AOP、使用XML配置开发Spring AOP。
10.下面是我对MyBatis动态SQL的补充:
如果使用JDBC或者类似于Hiberbate的其他框架,很多时候要根据需要去拼装SQL,这是一个麻烦的事情。因为某些查询需要很多条件,比如查询角色,可以根据角色名称或者备注等信息查询当不输入名称时使用名称作条件就不合适了。通常使用其他框架需要大量的Java代码进行判断,可读性比较差,而MyBatis提供对SQL语句动态的组装能力,使用XML的几个简单的元素,便能完成动态SQL的功能,大大减少了代码量,这体现了MyBatis灵活、高度可配置性和可维护性。MyBatis也可以在注解中配置SQL,但是由于注解配置功能受限,而且对于复杂的SQL而言可读性很差所以较少使用。
MyBatis的动态SQL包含以下几种元素:if、choose(when,otherwise)、trim(where,set)和foreach
作用分别是判断语句,相当于Java中的switch和case语句,辅助元素,用于处理特定的SQL拼装问题,比如去掉多余的and、or等,循环语句。分别应用于单条件分支判断,多条件分支判断,用于处理SQL拼装的问题,在in语句等列举条件常用
动态SQL实际使用的元素并不多,但是它们带来的灵活性,减少许多工作量的同时,也在很大程度上提高了程序的可读性和可维护性。if是最常见的判断语句,相当于Java中的if语句,它常常与test属性联合使用。
在Hibernate中常常因为要更新某一对象,而发送所有的字段给持久对象,而现实中的场景是只想更新某一字段,如果发送所有的属性去更新对网络带宽消耗较大。性能最佳的办法是把主键和更新字段的值传递给SQL去更新。MyBatis中的set元素则可以解决这个问题。
foreach是一个循环语句,它的作用是遍历集合,它能很好地支持数组和List、Set接口的集合对此提供遍历功能。它往往用于SQL中的in关键字,一个List<String>的角色编号和集合roleNoList,可以使用foreach元素找到在这个集合中的角色的详细信息。
用test的属性判断字符串:test用于条件判断语句,它在MyBatis中使用广泛。test的作用相当于判断真假,在大部分场景中,它都是用以判断空和非空的。有时候需要判断字符串、数字和枚举等。所以十分有必要讨论一下它的用法。通过if元素的介绍,可以知道如何判断非空。
bind元素的作用是通过OGNL表达式去自定义一个上下文变量,这样更方便使用,在进行模糊查询时,如果是MySQL数据库,常常会用到一个concat,它用“%”和参数相连。但是在Oracle数据库中则没有,Oracle数据库用连接符号“||”,这样SQL就需要提供两种形式去实现但是有了bind元素,就不必使用数据库的语言,而是使用MyBatis的动态SQL即可完成。使用关联查询时,若查询条件在所查询的表中满足多少个表即查询多少次数据,因此采用关联查询条件才能达到查询需求。