MyBatis理解
我们把Mybatis的功能架构分为三层:
- API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
- 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
- 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
MyBatis支撑注解和配置文件两种方式。注释方式比较直观,但对于复杂关系的查询,不如配置文件清晰。如一对多、多对多。配置文件方式,结构清晰,与dao分离,显示不够直观。
MyBatis,可以使用动态SQL,如if、choose、when、otherwise、foreach
#相当于对数据加上双引号,$相当于直接显示数据。#方式能够很大程度防止sql注入。一般能用#的就别用$
Spring+MyBatis多数据源的配置?
可以采用两种方式,一种是,配置多数据源,不同的数据源,对应不同的包,MapperScannerConfigurer 的配置——使用sqlSessionFactoryBeanName属性,注入不同的sqlSessionFactory的名称,这样的话,就为不同的数据库对应的 mapper 接口注入了对应的 sqlSessionFactory。这种方式,适用于不同的数据库。
另一种是使用AOP的方式,这种方式适合master-slave这种数据库结构,主库做增、删、改,从库做查询。AOP根据配置(方法名称)选择数据源。