zoukankan      html  css  js  c++  java
  • MyBatis框架(4)全局文件

    本次全部学习内容MyBatisLearning

     
    全局配置文件(本次案例中):
     
    配置内容and顺序如下:
    properties(属性)
    settings(全局配置参数)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
    environments(环境集合属性对象)
      environment(环境子属性对象)
        transactionManager(事务管理)
        dataSource(数据源)
    mappers(映射器)
     
     
     
     
    properties(属性):
    将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。
    在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
    将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。
     
    属性
    property标签
    resource
    url
     
    resource:相对于工程的路径
    db.properties内容:
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3307/shopping
    jdbc.username=root
    jdbc.password=1234567
    在SqlMapConfig.xml加载db.properties
         <!-- 加载属性文件 -->
         <!-- properties -->
         <properties resource="db.properties"></properties>
    .......
        <property name="driver" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    .......
    property标签
          <!-- 加载属性文件 -->
         <!-- properties -->
         <properties resource="db.properties">
                 <!-- 可以配置一些属性名和属性值 -->
                 <property name="jdbc.root" value="root"/>       
         </properties>
    注意: MyBatis 将按照下面的顺序来加载属性:
    在 properties 元素体内定义的属性首先被读取。
    然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
    最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
     
    因此,通过parameterType传递的属性具有最高优先级,resource或 url 加载的属性次之,
    最低优先级的是 properties 元素体内定义的属性。
     
    url:使用绝对路径
     
     
    settings全局的参数配置:
    mybatis运行时可以调整运行参数
    如:二级缓存,延迟加载,驼峰命名等.......
    全局参数会影响mybatis的运行行为
     
     
     
    typeAliases(类型别名)(important)
    1.在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。
    2.如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
     
     
    默认支持的别名:
     
    自定义别名:
     
    单个定义别名:
    在全局配置文件中:
    type:起别名的全类名
    alias:起的别名
    <!-- 别名 -->
         <typeAliases>
               <!-- 针对单个别名的定义 -->
               <typeAlias type="com.MrChengs.po.User" alias="user"/>
         </typeAliases>
    找到UserMapper.xml:
    修改
         <!-- 根据id查询 -->
         <!-- public User findUserById(int id) throws Exception; -->
         <select id="findUserById" parameterType="int" resultType="user">
               select * from user where id=#{id}
         </select>
    然后在找到其运行文件进行测试是可以查询到
    把user修改之后,得不到查询结果,还会有异常
     
     批量起别名:

    <typeAliases>
                <!-- 批量起别名 -->
                <!-- 指定自动扫描的po类,自动定义 别名,别名就是类名(首字母大小写都可以)-->
                <package name="com.MrChengs.po"/>
         </typeAliases>

     其余代码不变进行测试!!!

     
     
     
     
    typeHandlers(类型处理器)
    mybatis中通过typeHandlers完成jdbc类型和java类型的转换。
    通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.
     
    类型处理器用于java类型和jdbc类型映射,如下:
    <select id="findUserById" parameterType="int" resultType="user">
        select * from user where id = #{id}
    </select>

     mybatis支持的:

     
     
     mappers(映射器)
     
    mapper的映射配置
     
    单个映射文件的加载:
    使用resource加载单个文件:
     
         <mappers>
               <mapper resource="sqlmap/User.xml"/>
               <mapper resource="mapper/UserMapper.xml"/>
         </mappers>
    单个加载:
    通过class:
         <!-- 加载 映射文件 -->
         <mappers>
               <mapper resource="sqlmap/User.xml"/>
              
               <!-- 通过mmapper接口加载映射文件 -->
               <!-- 遵循规范:需要将mapper接口类和mapper.xml映射文件名保持一致,且在同一个目录 -->
               <!-- 前提要使用mapper代理方法 -->
               
               <mapper class="com.MrChengs.mapper.UserMapper"/>
         </mappers>

     

    此时是可以测试成功的

     
     
     批量加载:
         <mappers>
               <mapper resource="sqlmap/User.xml"/>
            
               <!-- 批量加载 -->
               <!-- 指定mapper接口的包名,自动扫描包下的 -->
               <!-- 遵循规范:需要将mapper接口类和mapper.xml映射文件名保持一致,且在同一个目录  -->
               <!--  前提要使用mapper代理方法 -->
               <!-- 推荐使用 -->
               <package name="com.MrChengs.mapper"/>
         </mappers>

     此时是可以测试成功的

     
  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/9756422.html
Copyright © 2011-2022 走看看