zoukankan      html  css  js  c++  java
  • Mybatis03__配置文件简介

    Mybatis配置文件详解 

      在mabatis中有两个配置文件,一个是全局配置文件,它是指导Mybatis如何运行的(官方的名称是applicationContext.xml),另外一个配置文件时dao接口的实现文件(xxxmapper.xml),它是指导哪个接口中的哪个方法是如何运行的.

    一、全局配置文件(mybatis-conf.xml)

    1、properties配置:mybatis用来加载外部properties配置文件用的,mybatis与spring整合之后会采用spring的方式来加载配置文件,具体用法如下:

      01、jdbc.properties

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

      02、全局配置文件引入jdbc.properties配置文件

    <configuration>
    	// 加载类路径下的jdbc.properties配置文件
        <properties resource="jdbc.properties"></properties>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
    				// jdbc.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}"/>
                </dataSource>
            </environment>
        </environments>
    </configuration>
    

    2、settings

    <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="autoMappingUnknownColumnBehavior" value="WARNING"/>
     <setting name="defaultExecutorType" value="SIMPLE"/>
     <setting name="defaultStatementTimeout" value="25"/>
     <setting name="defaultFetchSize" value="100"/>
     <setting name="safeRowBoundsEnabled" value="false"/>
     // 开启驼峰命名规则,默认值是false,当设置为true时,可以将数据库中 USER_NAME 的列名与实体类中的 userName 进行映射
     <setting name="mapUnderscoreToCamelCase" value="false"/>
     <setting name="localCacheScope" value="SESSION"/>
     <setting name="jdbcTypeForNull" value="OTHER"/>
     <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    </settings>
    

      

    3、typeAliases:类型别名

    <typeAliases>
     // 如果不注明alias的值,那么别名默认使用的就是类名,并且对大小写不敏感,Atuhor和author均可以
     <typeAlias type="domain.blog.Author"/>
     // 别名设置为Blog,那么在xxxMapper.xml中使用Blog等同于domain.blog.Blog
     <typeAlias alias="Blog" type="domain.blog.Blog"/>
     // com.mybatis.entity下面所有的类都支持类型别名,由于没有指明alias属性,所以User、user都可以
     <package name="com.mybatis.entity"></package>
    </typeAliases>
    

      虽然支配各种方式来配置类型别名,但是还是建议在xxxMapper.xml中配置完整类名

    <mapper namespace="com.mybatis.dao.UserMapper">
    	// 但是还是建议配置完整的包类路径,这样可以很好的识别映射的实体类
        <select id="queryUserById"  resultType="com.mybatis.entity.User">
          select id,user_name as userName,age from user where id = #{id}
        </select>
    </mapper>
    

      

    4、Mappers映射器

      mappers标签中有两个标签
        1、mapper标签里面有三个取值
          01、url:用来加载物理磁盘上或者网络上的配置文件
          02、resource:用来加载类路径下的配置文件
          03、class:基本不用
      如果使用mapper一次只能加载一个mapper.xml文件,如果有大量的mapper.xml文件需要被加载就要写很多的mapper标签,针对这种情况我们使用package标签
        2、package标签扫描包的形式批量引入xxxMapper.xml映射文件
      用来加载某一个包下面的配置文件,但是需要将配置文件和接口放在同一个地方,并且接口的名字xml的名字相同(原理是通过接口的名字,找到相同名字同一路径下的xml文件,然后加载xml文件)

      但是实际情况下我们习惯把xxxMapper接口放置在 src/main/java下,而习惯把xxxMapper.xml配置文件放置在 src/main/resources,如何实现使xxxMapper接口和xxxMapper.xml编译之后能放置在一起呢?

      具体步骤如下:(我这里是Maven工程)

        1、项目的pom.xml中加上如下配置(当然其它方式还有很多)

    <build>
    	<resources>
    		<resource>
    			<directory>src/main/resources</directory>
    			<includes>
    				<include>**/*.properties</include>
    				<include>**/*.xml</include>
    				<include>**/*.tld</include>
    			</includes>
    			<filtering>false</filtering>
    		</resource>
    		<resource>
    			<directory>src/main/java</directory>
    			<includes>
    				<include>**/*.properties</include>
    				<include>**/*.xml</include>
    				<include>**/*.tld</include>
    			</includes>
    			<filtering>false</filtering>
    		</resource>
    	</resources>
    </build>
    

        2、在 src/main/resources下建立和xxxMapper文件一样的包结构(com.mybatis.dao,记住文件夹要一个一个的建),如左图,建立完以后,编译项目,如果编译之后发现xxxMapper接口和xxxMapper.xml都在同一目录下,那么就OK了

                             

    二、映射配置文件(xxxMapper.xml)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.mybatis.dao.EmployeeMapper">
        <insert id="insertEmployee" useGeneratedKeys="true" keyProperty="employeeId">
            INSERT INTO employee VALUES (null,#{employeeName},#{employeePassword},#{employeeAge},#{departmentId})
        </insert>
    
        <select id="queryEmployeeByEmployeeId" resultType="com.mybatis.entity.Employee">
            SELECT EMPLOYEE_ID,EMPLOYEE_NAME,EMPLOYEE_PASSWORD,EMPLOYEE_AGE,DEPARTMENT_ID FROM employee
            WHERE EMPLOYEE_ID=#{employeeId}
        </select>
    </mapper>
    
    整个mapper.xml文件中只有一个标签mapper,下面这些就是mapper标签中的子标签
        namespace:告诉mybatis这个配置文件是要实现哪一个接口
        cache:和缓存有关
        cache-ref:和缓存有关
        parameterMap:参数map:废弃了,原本是来做复杂参数映射;
        resultMap:结果映射:自定义结果集的封装规则;
        sql:抽取可重用的sql;
        insert:添加
        delete:删除
        update:修改
        select:查询
    

       

  • 相关阅读:
    注意事项
    org.apache.jsp.index_jsp
    部署 Web 项目 到 Deepin
    WEB项目打包
    IDEA开启JSP热部署
    16.【转载】Swagger2文档插件:常用注解及属性说明
    8.【原创】Spring Mvc配置Swagger+swagger-bootstrap-ui生成日志服务
    7.【原创】Spring Mvc自定义DispatcherServlet类,处理404异常
    12.【原创】ES6常用的新语法
    15.【转载】使用TortoiseGit,设置ssh方式连接git仓库
  • 原文地址:https://www.cnblogs.com/xiaomaomao/p/13646767.html
Copyright © 2011-2022 走看看