8.连接池
8.1 mybatis中的连接池3种配置选项:
8.2 unpool原理分析:
8.3 pool原理分析:
8.4 JDNI介绍:
9.动态sql
9.1 where if foreach 标签:
10.多表操作
10.1 一对一操作(association):
10.2 多对多操作(collection):
10.3 延迟加载:
8.连接池
8.1 mybatis中的连接池3种配置选项:
POOLED 采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现
UNPOOLED 采用传统的获取连接的方式,虽然也实现Javax.sql.DataSource接口,但是并没有使用池的思想
JNDI 采用服务器提供的JNDI技术实现,来获取DataSource对象,不同服务器所能拿到DataSource不一样。
8.2 unpool原理分析:
MyBatis 内部分别定义了实现了 java.sql.DataSource 接口的 UnpooledDataSource,PooledDataSource 类来表示 UNPOOLED、POOLED 类型的数据源。
UnpooledDataSource源码如下
8.3 pool原理分析:
MyBatis连接池里面使用集合来放置连接对象.有两个池子,一个空闲池,一个活动池。二者加起来等于是连接池能用的最大连接数。
8.4 JDNI介绍:(扩展)
JNDI:一种标准的Java命名系统接口(模仿windows注册表,说白了就是把资源取个名字,再根据名字来找资源。)
9.动态sql
编译时无法确定,只有等到程序运行起来,在执行的过程中才能确定,这种SQL叫做动态SQL。
9.1 where if foreach 标签
10.多表操作
10.1 一对一操作(association):
10.2 多对多操作(collection):
通过account表中的uid进行关联
通过中间表account_user进行关联
10.3 延迟加载
SqlMapConfig.xml文件中追加配置
lazyLoadingEnabled:是否启用延迟加载,默认为false
aggressiveLazyLoading:是否启用按需加载,默认为true
collection和assocation中追加标签嵌套查询
select:对应xml的namespace + sql的id
column:作为select语句的参数传入