mybatis学习----优化Mybatis配置文件中的配置
Posted 芝麻_糊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis学习----优化Mybatis配置文件中的配置相关的知识,希望对你有一定的参考价值。
一.把连接数据库的配置单独放在一个properties文件中
前面我们是把数据库的连接信息放在了mybatis-config.xml中,如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!--配置数据库环境,可以有多个environment,default值是其中一个environment的id值--> 5 <environments default="developement"> 6 <environment id="developement"> 7 <!--配置事务管理器,JDBC和MANAGED两种,JDBC可以进行回滚和提交--> 8 <transactionManager type="JDBC"></transactionManager> 9 <!--配置数据源,type=[UNPOOLED | POOLED| JNDI], POOLED表示实现简单的数据池连接,连接可以复用--> 10 <dataSource type="POOLED"> 11 <property name="driver" value="com.mysql.jdbc.Driver"></property> 12 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"></property> 13 <property name="username" value="root"></property> 14 <property name="password" value="123456"></property> 15 </dataSource> 16 </environment> 17 </environments> 18 <!--resource值是映射文件所在的路径--> 19 <!--class值是映射接口类所在的路径--> 20 <mappers> 21 <!--mapper resource="mapping/userMapper.xml"></mapper>--> 22 <mapper class="me.gacl.map.UserMapperI"></mapper> 23 </mappers> 24 </configuration>
其实我们完全可以将数据库的连接配置信息写在一个properties文件中,然后在conf.xml文件中引用properties文件,具体做法如下:
首先建一个db.properties文件,文件内容如下:
1 driver=com.mysql.jdbc.Driver 2 url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8 3 username=root 4 password=123456
然后在mybatis-config.xml中,引用db.properties配置文件中的属性,如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!--引用db.properties文件--> 5 <properties resource="db.properties"></properties> 6 <!--配置数据库环境,可以有多个environment,default值是其中一个environment的id值--> 7 <environments default="developement"> 8 <environment id="developement"> 9 <!--配置事务管理器,JDBC和MANAGED两种,JDBC可以进行回滚和提交--> 10 <transactionManager type="JDBC"></transactionManager> 11 <!--配置数据源,type=[UNPOOLED | POOLED| JNDI], POOLED表示实现简单的数据池连接,连接可以复用--> 12 <dataSource type="POOLED"> 13 <property name="driver" value="${driver}"></property> 14 <property name="url" value="${url}"></property> 15 <property name="username" value="${username}"></property> 16 <property name="password" value="${password}"></property> 17 </dataSource> 18 </environment> 19 </environments> 20 <!--resource值是映射文件所在的路径--> 21 <!--class值是映射接口类所在的路径--> 22 <mappers> 23 <!--mapper resource="mapping/userMapper.xml"></mapper>--> 24 <mapper class="me.gacl.map.UserMapperI"></mapper> 25 </mappers> 26 </configuration>
二.为实体类定义别名,简化sql映射xml文件的引用
以前在sql中引用实体类时,需要写上实体类的全类名(包名+类名),如:
1 <select id="getUser" parameterType="int" resultType="me.gacl.domain.User"> 2 select * from users where id=#{id} 3 </select>
resultType="me.gacl.domain.User"这里写的实体类User的全类名me.gacl.domain.User,每次都写这么一长串内容挺麻烦的,而我们希望能够简写成下面的形式
1 <select id="getUser" parameterType="int" resultType="_User"> 2 select * from users where id=#{id} 3 </select>
parameterType="_User"这样写就简单多了,为了达到这种效果,我们需要在conf.xml文件中为实体类="me.gacl.domain.User"定义一个别名为"_User",具体做法如下:
在conf.xml文件中<configuration></configuration>标签中添加如下配置:
<!--配置User类的别名--> <typeAliases> <typeAlias type="me.gacl.domain.User" alias="_User"></typeAlias> </typeAliases>
这样就可以为me.gacl.domain.User类定义了一个别名为_User,以后_User就代表了me.gacl.domain.User类,这样sql映射xml文件中的凡是需要引用me.gacl.domain.User类的地方都可以使用_User来代替,这就达到了一个简化实体类引用的目的。
除了可以使用<typeAlias type="me.gacl.domain.User" alias="_User"/>这种方式单独为某一个实体类设置别名之外,我们还可以使用如下的方式批量为某个包下的所有实体类设置别名,如下:
1 <!--配置User类的别名--> 2 <typeAliases> 3 <!--配置User类的别名为"_User"--> 4 <!--<typeAlias type="me.gacl.domain.User" alias="_User"></typeAlias>--> 5 <!--配置me.gacl.domain包下所有类的别名,默认是类名即"User"--> 6 <package name="me.gacl.domain"></package> 7 </typeAliases>
<package name="me.gacl.domain"/>就表示为这个包下面的所有实体类设置别名。MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名,比如me.gacl.domain.User这个实体类的别名就会被设置成User。
注意:typeAliases必须在environments和mappers标签之前,不然会报错
完整的mybatis-config.xml文件如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!--引用db.properties文件--> 5 <properties resource="db.properties"></properties> 6 <!--配置User类的别名--> 7 <typeAliases> 8 <!--配置User类的别名为"_User"--> 9 <typeAlias type="me.gacl.domain.User" alias="_User"></typeAlias> 10 <!--配置me.gacl.domain包下所有类的别名,默认是类名即"User"--> 11 <!--<package name="me.gacl.domain"></package>--> 12 </typeAliases> 13 <!--配置数据库环境,可以有多个environment,default值是其中一个environment的id值--> 14 <environments default="developement"> 15 <environment id="developement"> 16 <!--配置事务管理器,JDBC和MANAGED两种,JDBC可以进行回滚和提交--> 17 <transactionManager type="JDBC"></transactionManager> 18 <!--配置数据源,type=[UNPOOLED | POOLED| JNDI], POOLED表示实现简单的数据池连接,连接可以复用--> 19 <dataSource type="POOLED"> 20 <property name="driver" value="${driver}"></property> 21 <property name="url" value="${url}"></property> 22 <property name="username" value="${username}"></property> 23 <property name="password" value="${password}"></property> 24 </dataSource> 25 </environment> 26 </environments> 27 <!--resource值是映射文件所在的路径--> 28 <!--class值是映射接口类所在的路径--> 29 <mappers> 30 <!--mapper resource="mapping/userMapper.xml"></mapper>--> 31 <mapper class="me.gacl.map.UserMapperI"></mapper> 32 </mappers> 33 </configuration>
以上是关于mybatis学习----优化Mybatis配置文件中的配置的主要内容,如果未能解决你的问题,请参考以下文章
mybatis学习----优化Mybatis配置文件中的配置
MyBatis学习总结——优化MyBatis配置文件中的配置
Mybatis框架学习总结-优化Mybatis配置文件中的配置
MyBatis学习总结_03_优化MyBatis配置文件中的配置