11Mybatis_SqlMapConfig.xml专题讲解

Mybatis的SqlMapConfig.xml中以下的标签:

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。

做法如下:

先给出案例图:

这个修改如下:1.增加了一个db.propertiese文件里面的内容如下:

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

2.修改SqlMapConfig.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 和spring整合后 environments配置将废除-->
    <properties resource="db.properties"></properties>
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <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>

    <!-- 把映射文件(sqlmap/user.xml)加载进sqlMapConfig.xml-->
        <mappers>
           <!--  把mapper.xml加载进sqlMapConfig.xml-->
            <mapper resource="mapper/userMapper.xml"/>
         </mappers>

</configuration>

properties特性:

注意: MyBatis 将按照下面的顺序来加载属性:

在 properties 元素体内定义的属性首先被读取。

然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。

最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

建议:

不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

运行之后一切正常。

----------------------------------------------------------------------------------------------------------------------------------------------------------

第二部分:Settings全局参数配置:

mybatis框架在运行时可以调整一些运行参数。

比如:开启二级缓存、开启延迟加载。。

全局参数将会影响mybatis的运行行为。不要随便乱设置参数。

---------------------------------------------------------------------------------------------------------------------------------------------------------------

第三部分:typeAilases(别名)重点,很常用的

需求:

在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。

如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

我们可以这么做:

1.在sqlMapper.xml中修改如下代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- properties的配置必须写在typeAliases的上面 -->
    <properties resource="db.properties"></properties>

<!-- 配置别名 -->
<typeAliases>
    <!-- 针对别名定义
    type:类型的路径
    alias:别名
     -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
 </typeAliases>

 <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <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>

    <!-- 把映射文件(sqlmap/user.xml)加载进sqlMapConfig.xml-->
        <mappers>

           <!--  把mapper.xml加载进sqlMapConfig.xml-->
            <mapper resource="mapper/userMapper.xml"/>
         </mappers>

</configuration>

2.userMapper.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">
<!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离

注意:使用mapper代理方式,namespace有特殊重要的作用
-->

<mapper namespace="cn.itcast.mybatis.Dao.UserMapper">

    <!-- 根据id获取用户信息 -->
    <!-- 在映射文件中配置很多sql语句 -->
    <!--
    id:标识映射文件中的sql;
    将sql语句封装到mappedStatement对象中,所以将id称为statement的id;parmenterType:指定输入的参数的类型,这里指定的int型
    #{}表示一个占位符号;
    #{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数就是简单类型,#{}中的参数名可以任意,可以value或其它名称
    resultType:指定的sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象;

     -->
     <!-- 这里因为用了typeAliases所以 resultType直接写user-->
    <select id="findUserById" parameterType="int" resultType="user">
        select * from user where id = #{id}
    </select>
    <!--where username like ‘%${value}%‘ 这句话中必须写value不然就报错。因为规则上明确说过
    ${}接收输入参数,类型可以是简单类型,pojo、hashmap。
       如果接收简单类型,${}中只能写成value。

      -->
  <select id="findUserByName" parameterType="String" resultType="user">
        select * from user where username like ‘%${value}%‘
    </select>

</mapper>

测试:代码运行正常。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

第四部分:mappers(映射配置)这个非常重要

mapper的映射配置分为三种:

1.通过rsource加载单个映射配置文件((修改SqlMapConfig.xml文件))

2.通过mapper接口加载单个mapper(修改SqlMapConfig.xml文件以及包的结构)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- properties的配置必须写在typeAliases的上面 -->
    <properties resource="db.properties"></properties>

<!-- 配置别名 -->
<typeAliases>
    <!-- 针对别名定义
    type:类型的路径
    alias:别名
     -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
 </typeAliases>

 <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <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>

        <mappers>

            <!-- 用mapper接口来加载单个mapper -->
              <!--            遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致           且在一个目录中。           当着这个规范的前提是:使用mapper代理方法。                       -->

            <mapper  resource="cn.itcast.mybatis.Dao.UserMapper"  />
         </mappers>

</configuration>

把包的结构改一下:需要将mapper接口类名和mapper.xml映射文件名称保持一致且在一个目录中。

运行一切正常。

3.批量加载mapper(推荐使用,企业中用的)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- properties的配置必须写在typeAliases的上面 -->
    <properties resource="db.properties"></properties>

<!-- 配置别名 -->
<typeAliases>
    <!-- 针对别名定义
    type:类型的路径
    alias:别名
     -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
 </typeAliases>

 <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <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>

        <mappers>

           <!-- 

           采用批量加载mapper的方式来加载也必须遵循下面的规范

           遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致
           且在一个目录中。
           当着这个规范的前提是:使用mapper代理方法。

            -->

            <package name="cn.itcast.mybatis.mapper"/>

         </mappers>

</configuration>

结果:运行一切正常

时间: 2024-10-23 04:37:26

11Mybatis_SqlMapConfig.xml专题讲解的相关文章

Activity Process Task Application 专题讲解

Activity Process Task Application 专题讲解 Activity.和进程 为了阅读方便,将文档转成pdf http://files.cnblogs.com/franksunny/ActivityTask%E5%BA%94%E7%94%A8%E5%92%8C%E8%BF%9B%E7%A8%8B%E5%B0%8F%E7%BB%93.pdf Activity.和进程 很想弄清楚启动一个ActivityTask(任务)的关系,网上也有很多相关资料,由从源码来具体分析的,也有

Jeecg_3.6新版本功能专题讲解 - 公开课

Jeecg_3.6新版本功能专题讲解 - 公开课 听课时间:12月22日/23日/28日/29日 晚上20:30-22:30 听课地点:http://ke.qq.com/course/107893#term_id=100114538 大纲内容:online实战开发 / 自定义表单实战开发 / jeecg 数据权限实战开发

Jpa 的Persistence.xml配置讲解

<?xml version="1.0"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.

XML专题:使用NSXMLParser解析xml文件

使用NSXMLParser解析xml文件 1. 设置委托对象,开始解析     NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];   //或者也可以使用initWithContentsOfURL直接下载文件,但是有一个原因不这么做:     // It's also possible to have NSXMLParser download the data, by passing it a URL, but this

火柴排队(NOIP2013)(附树状数组专题讲解(其实只是粗略。。。))

原题传送门..(9018上不去.明天再来搞.) 首先,这道题目是一道神奇的题. 看到这道题,第一眼就觉得2个数组排个序,然后一一对应的时候一定差值最小. 由于我们可以将这2个数列同时进行调换. 所以我们先把2个数列排个序. 第二个序列中的数组的下标都指向第一个数组中的数的原来位置(其实就是离散化(真是啰嗦..)) 离散化之后,我们就变成了一个混乱的数列变成升序数列的操作次数是多少. 然后自然就会想到逆序对.每次变换之后逆序对的个数最多只能-1: 所以答案就是数列中逆序对的个数. 然后就是求逆序对

【MAVEN】maven系列--pom.xml标签详解

pom文件作为MAVEN中重要的配置文件,对于它的配置是相当重要.文件中包含了开发者需遵循的规则.缺陷管理系统.组织.licenses.项目信息.项目依赖性等.下面将重点介绍一下该文件的基本组成与功能. 标签预览 <project> <modelVersion>4.0.0</modelVersion> <!-- 基础设置 --> <groupId>...</groupId> <artifactId>...</arti

Android开发之自定义View专题(三):自定义GridView

gridview作为android开发中常用的组件,其功能十分强大.但是,我们有时候有很多特殊的需求,需要在其基础上进行改造.有时候会有移动gridView中item位置的需求,这个网上已经有很多例子,博主就不在描述.今天博主讲的是移动gridView中item中的内容.博主没看过网上那些移动item位置的demo,不知道其原理是不是和博主想的一样.博主思考过,似乎博主的这种实现原理似乎也可以用作实现移动item位置.而之前博主百思不得其解的小米手机的桌面的自定义乱序排放,似乎也可以用这个原理去

Java笔试题之《XML部分》

XML部分 1.xml有哪些解析技术?区别是什么? 答:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式.它顺序读取XML文件,不需要一次全部装载整个文件.当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对X

tomcat6.0目录和server.xml详解

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.x,相对5.x性能提升很多,主要优化了内存使用,增强IO能力,重新构造集群功能. 近期对Tomcat6.x作深入学习,参考上述声明的Tomcat全攻略,由于笔者是2001年针对Tomcat4.x所写,故参考之并针对Tomcat6.x做了总结,形成此篇学习笔记,希望对学习的人有所帮助,本文涵盖了:Tomcat目录.Server.xml元素讲解,数据库连接池配置.线程池配置.虚拟目录配置.关于如何下载.安装.运行Tom