首先查看我们在resources目录下定义好的jdbcConfig.properties文件,这个文件主要是用于配置我们的数据库连接资源所用的:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/account
jdbc.username=root
jdbc.password=123456
其次,为了引用我们的这个配置信息jdbcConfig.properties文件,我们需要使用一个<properties></properties>标签,主要是用于外部引用配置文件信息一一properties文件所用的,这里常用的标签是resource进行引用:
<properties resource="jdbcConfig.properties"></properties>
配置好了之后,我们就需要在我们environment环境中的dataSource中直接引用了,一定要注意property标签中的所有value都要对应properties文件中的key值:
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
如果说我们想给我们的全限定类名中的对象起别名的话,我们可以直接在我们的sqlMapConfigm.xml文件中直接使用<typeAliases></typeAliases>进行起别名的操作,里面可以配置多个<typeAlias></typeAlias>,用于给多个domain对象起别名。里面有两个属性,一个是type用于指定全限定类名,一个是alias用于指定别名;
同时我们还可以使用<package></package>标签的方式,用于配置别名的包,直接指定到我们domain下的所有对象,该包下的所有对象都直接注册类名,并且类名就是别名,不区分大小写。里面只有一个name属性用于指定全限定类名;
<!--
使用typeAlice配置别名,只能配置domain中的别名
-->
<typeAliases>
<!--这里type是指定我们的domain中的对象(实体类全限定类名),要输入全限定类名,alias是起别名-->
<!--<typeAlias type="com.ysw.domain.Account" alias="account"></typeAlias>-->
<!-- 用于指定要配置的别名的包,当指定账户,该包下的实体类都会注册类名,并且类名就是别名,不区分大小写 -->
<package name="com.ysw.domain"></package>
</typeAliases>
POOL和UNPOOL的区别,其实就是一个使用了连接池技术,一个没有使用连接池技术;
POOLED,采用传统的javax.sql.DataSource规范中的连接池(从池中获取一个链接来用)
UNPOOLED,采用传统的获取连接方式,虽然也实现了接口,但是没有使用池的思想(每次都创建一个链接来用)
JNDI,采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器拿到的是不同的DataSource
注意:(如果不是Maven的war或者web的话就不能使用而tomcat采用的是dbcp连接池)
POOLED是有把连接资源放回连接池中,而UNPOOLED是没有放回连接池直接关闭资源的。
实现原理:
如果使用POOLED的话,
一开始的时候是先从空闲池中提取连接,
如果有链接的话就提出来使用;
如果空闲池中没有空闲链接的话,
就会先到活动池中,判断活动池是否达到了最大数量
如果是的话就会提取出最老的那个链接并将它获取到
package的使用,主要是可以一次性地指定全限定类名的dao层接口,不用再指定到dao层每一个接口的Mapper映射文件去了:
<mappers>
<!--<mapper resource="com/ysw/dao/IAccountDao.xml"></mapper>-->
<!--package指定的是dao接口所在的包,当指定了之后就不需要写mapper以及resource或者class了-->
<package name="com.ysw.dao"></package>
</mappers>