zoukankan      html  css  js  c++  java
  • mybatis 配置文件全解

    目录


    properties

    settings

    typeAliases

    mappers


    properties

      mybatis配置文件中,可以像代码一样定义变量,然后在配置文件的其他地方使用,比如数据库连接的相关配置:

    <configuration>
    	<properties>
    		<property name="driver" value="com.mysql.jdbc.Driver"></property>
    		<property name="url" value="jdbc:mysql://localhost:3306/mybatis"></property>
    		<property name="username" value="root"></property>
    		<property name="password" value="root"></property>
    	</properties>
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC"></transactionManager>
    			<dataSource type="POOLED">
    				<property name="driver" value="${driver}"></property>
    				<property name="url" value="${url}"></property>
    				<property name="username" value="${username}"></property>
    				<property name="password" value="${password}"></property>
    			</dataSource>
    		</environment>
    	</environments>
    </configuration>
    

      

      当然,也可以使用properties标签加载外部配置文件,比如,创建src/conf/db.properties:

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis
    username=root
    password=root
    

      在mybatis中引入外部配置文件:

    <configuration>
    	<properties resource="conf/db.properties"></properties>
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC"></transactionManager>
    			<dataSource type="POOLED">
    				<property name="driver" value="${driver}"></property>
    				<property name="url" value="${url}"></property>
    				<property name="username" value="${username}"></property>
    				<property name="password" value="${password}"></property>
    			</dataSource>
    		</environment>
    	</environments>
    </configuration>
    

      

      注意,加载外部配置文件的同时,也可以在在内部配置与配置文件中相同的属性,此时会覆盖外部配置文件的属性值。

    settings

      settings标签可以用设置很多配置项,但是最常用的就是配置日志管理:

    <settings>
    	<setting name="logImpl" value="log4J"/>
    </settings>
    

      

      其他的setting配置,可以参考mybatis官网给出的示例:

    <settings>
    	<setting name="cacheEnabled" value="true" />
    	<setting name="lazyLoadingEnabled" value="true" />
    	<setting name="multipleResultSetsEnabled" value="true" />
    	<setting name="useColumnLabel" value="true" />
    	<setting name="useGeneratedKeys" value="false" />
    	<setting name="autoMappingBehavior" value="PARTIAL" />
    	<setting name="defaultExecutorType" value="SIMPLE" />
    	<setting name="defaultStatementTimeout" value="25" />
    	<setting name="safeRowBoundsEnabled" value="false" />
    	<setting name="mapUnderscoreToCamelCase" value="false" />
    	<setting name="localCacheScope" value="SESSION" />
    	<setting name="jdbcTypeForNull" value="OTHER" />
    	<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
    </settings>
    

      配置项虽然很多,但都见名知意。

    typeAliases

      我们在创建mapper映射文件的时候,对于parameterType和resultType而言,如果是自定义的实体类,那么就需要写全路径,比如像下面这样:

      cn.ganlixin.mapper.PersonMapper.xml

    <mapper namespace="cn.ganlixin.mapper.PersonMapper">
    	<select id="selectOnePerson"
    			parameterType="cn.ganlxin.pojo.Person"
    			resultType="cn.ganlixin.pojo.Person">
    		select * from person where id=#{id}
    	</select>
    </mapper>
    

      上面parameterType和resultType写全路径其实是很不方便的,此时可以在mybatis配置文件中使用typeAliases来配置别名:

    <typeAliases>
    	<typeAlias type="cn.ganlixin.pojo.Person" alias="person"/>
    </typeAliases>
    

      之后cn.ganlixin.mapper.PersonMapper.xml中就可以这样写了:

    <mapper namespace="cn.ganlixin.mapper.PersonMapper">
    	<select id="selectOnePerson" parameterType="person" resultType="person">
    		select * from person where id=#{id}
    	</select>
    </mapper>
    

      

      上面只是为cn.ganlixin.pojo.Person配置了别名,如果实体类很多,那么单独为每一个实体类配置别名,工作量就有点大了,此时可以为一个包下面的所有实体类配置别名,比如这里为cn.ganlixin.pojo包下的所有实体类都配置别名,别名就是单独的类名:

    <typeAliases>
    	<package name="cn.ganlixin.pojo"/>
    </typeAliases>
    

      

    mappers

      mappers的功能就是指定哪些位置的xml会被mybatis解析。

      可以有三种方式使用mappers:

      1、使用resource属性,每次指定一个mapper映射文件:

    <mappers>
    	<mapper resource="cn/ganlixin/mapper/PersonMapper.xml"></mapper>
    	<mapper resource="cn/ganlixin/mapper/StudentMapper.xml"></mapper>
    </mappers>
    

      

      2、使用url属性,每次也是指定一个mapper映射文件:

    <mappers>
    	<!-- windows中 -->
    	<mapper url="file:///E:/mapper/PersonMapper.xml"/>
    	
    	<!-- linux中 -->
    	<mapper url="file:///usr/mapper/PersonMapper.xml" />
    </mappers>
    

      

      3、使用接口绑定式,可以用class属性,一次指定一个interface文件:

    <mappers>
    	<mapper class="cn.ganlxin.mapper.PersonMapper" />
    </mappers>
    

      

      4、使用接口绑定时,可以用package属性,一次性指定一个包下面的所有interface文件:

    <mappers>
    	<package name="cn.ganlixin.mapper"/>
    </mappers>
    

      

  • 相关阅读:
    虚拟机LUN扩大后,重新分区
    rm: cannot remove `/home/cn0000/log/formlog.20140417': Read-only file system
    sybase 备份和恢复
    全表扫描计算成本
    标量子查询 子查询执行次数计算公式
    left join 关联条件位置
    动态SQL使用绑定变量
    如何在SQLServer中处理每天四亿三千万记录的
    移动端UI一致性解决方案
    工业互联网中MES系统的重要性
  • 原文地址:https://www.cnblogs.com/-beyond/p/10115302.html
Copyright © 2011-2022 走看看