Mybatis全局配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD com.Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--1、mybatis可以使用properties来引入外部properties配置文件的内容;
       resource:引入类路径下的资源 url:引入网络路径或者磁盘路径下的资源 -->
    <properties resource="dbconfig.properties"/>

    <!-- 2、settings包含很多重要的设置项 setting:用来设置每一个设置项
      name:设置项名 value:设置项取值 -->

    <settings>
       <setting value="true" name="mapUnderscoreToCamelCase" />
<!--      显示的指定每个我们需要更改的配置的值,即使是默认的,防止版本更新带来的问题-->
        <setting name="cacheEnabled" value="true"/>
<!--        <setting name="aggressivelazyLoading" value="false"/>-->
    </settings>
    <!-- 3、typeAliases:别名处理器:可以为我们的java类型起别名别名不区分大小写 -->

    <typeAliases>
       <!-- 1、typeAlias:为某个java类型起别名 type:指定要起别名的类型全类名;
           默认别名就是类名小写:employee   alias:指定新的别名
       示例:<typeAlias type="HelloWord.Employee" alias="emp"/>-->

        <!-- 2、package:为某个包下的所有类批量起别名 name:
    指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写),) -->
      <package name="HelloWord"/>
        <!-- 3、批量起别名的情况下,如果类名重复使用@Alias注解为某个类型指定新的别名 -->
    </typeAliases>

    <!-- 4、environments:环境们,mybatis可以配置多种环境 ,default指定使用某种环境。可以达到快速切换环境。
     environment:配置一个具体的环境信息;必须有两个标签;id代表当前环境的唯一标识
     transactionManager:事务管理器;
     type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
     自定义事务管理器:实现TransactionFactory接口.type指定为全类名
     dataSource:数据源;type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)|POOLED(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)
     自定义数据源:实现DataSourceFactory接口,type是全类名 -->


    <!--    plgin:注册插件-->
    <plugins>
<!--        <plugin interceptor="Plugin.MyFirstPlugin">-->
<!--            <property name="username" value="root"/>-->
<!--            <property name="password" value="1234"/>-->
<!--        </plugin>-->
<!--        <plugin interceptor="Plugin.MySecondPlugin"></plugin>-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>


    <environments default="dev_mysql">
      <environment id="dev_mysql">
         <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
         <property value="${jdbc.driver}" name="driver"/>
         <property value="${jdbc.url}" name="url"/>
         <property value="${jdbc.username}" name="username"/>
         <property value="${jdbc.password}" name="password"/>
      </dataSource>
     </environment>
      <environment id="dev_oracle">
        <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
         <property value="${orcl.driver}" name="driver"/>
         <property value="${orcl.url}" name="url"/>
         <property value="${orcl.username}" name="username"/>
         <property value="${orcl.password}" name="password"/>
      </dataSource>
    </environment>
    </environments>

    <!-- 5、databaseIdProvider:支持多数据库厂商的;
    type="DB_VENDOR":VendorDatabaseIdProvider
    作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;MySQL,Oracle,SQL Server,xxxx -->
    <databaseIdProvider type="DB_VENDOR">
    <!-- 为不同的数据库厂商起别名 -->
    <property value="mysql" name="MySQL"/>
    <property value="oracle" name="Oracle"/>
    <property value="sqlserver" name="SQL Server"/>
     </databaseIdProvider>
    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->

    <!-- 6、mappers:将sql映射注册到全局配置中 -->
    <mappers>
    <!-- mapper:注册一个sql映射注册配置文件resource:引用类路径下的sql映射文件mybatis/mapper/EmployeeMapper.xml
    url:引用网路路径或者磁盘路径下的sql映射文件
    file:///var/mappers/AuthorMapper.xml 注册接口
    class:引用(注册)接口,
      1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
      2、没有sql映射文件,所有的sql都是利用注解写在接口上;
          推荐:比较重要的复杂的Dao接口我们来写sql映射文件
         不重要简单的Dao接口为了开发快速可以使用注解; -->
     <mapper resource="EmployeeMapper.xml"/>
     <mapper resource="DepartmentMapper.xml"/>
<!--     <mapper resource="mbg.xml" />-->
      <mapper resource="EmployeeMapperDynamicSQL.xml" />
     <mapper class="HelloWord.EmployeeMapperAnnotation"/>
    <!-- 批量注册:接口类和映射文件应在同一文件目录下 -->
<!--    <package name="HelloWord"/>-->
    </mappers>
</configuration>

ResultType和ResultMap

1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射 关系

resultType:自动映射,用于属性名和表中字段名一致的情况

resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况

2、当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常 TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

添加用户信息时

 useGeneratedKeys:设置使用自增的主键

 keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参 数user对象的某个属性中

resultMap处理字段和属性的映射关系

resultMap:设置自定义映射

属性 id:表示自定义映射的唯一标识

type:查询的数据要映射的实体类的类型

子标签

         id:设置主键的映射关系

        result:设置普通字段的映射关系

        association:设置多对一的映射关系

        collection:设置一对多的映射关系

属性: property:设置映射关系中实体类中的属性名

              column:设置映射关系中表中的字段名

使用association处理映射关系

<resultMap id="empDeptMap" type="Emp">
<id column="eid" property="eid"></id>
<result column="ename" property="ename"></result>
<result column="age" property="age"></result>
<result column="sex" property="sex"></result>
<association property="dept" javaType="Dept">
<id column="did" property="did"></id>
<result column="dname" property="dname"></result>
</association>
</resultMap>
<!--Emp getEmpAndDeptByEid(@Param("eid") int eid);-->
<select id="getEmpAndDeptByEid" resultMap="empDeptMap">
select emp.*,dept.* from t_emp emp left join t_dept dept on emp.did =
dept.did where emp.eid = #{eid}
</select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值