zoukankan      html  css  js  c++  java
  • MyBatis学习笔记2--配置环境详解

    1.MyBatis-config.xml详解

    一个完整的配置文件如下所示

    <configuration>

    <!-- <properties resource="jdbc.properties"/> -->

    <properties>

    <property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>

    <property name="jdbc.url" value="jdbc:mysql://localhost:3306/db_mybatis"/>

    <property name="jdbc.username" value="root"/>

    <property name="jdbc.password" value="123456"/>

    </properties>

    <!-- <typeAliases>

    <typeAlias alias="Student" type="com.java1234.model.Student"/>

    </typeAliases> -->

    <typeAliases>

    <package name="com.java1234.model"/>

    </typeAliases>

    <environments default="development">

    <environment id="development">

    <transactionManager type="JDBC" />

    <dataSource type="POOLED">

    <property name="driver" value="${jdbc.driverClassName}" />

    <property name="url" value="${jdbc.url}" />

    <property name="username" value="${jdbc.username}" />

    <property name="password" value="${jdbc.password}" />

    </dataSource>

    </environment>

    </environments>

    <mappers>

    <!-- <mapper resource="com/java1234/mappers/StudentMapper.xml" /> -->

    <!-- <mapper class="com.java1234.mappers.StudentMapper"/> -->

    <package name="com.java1234.mappers"/>

    </mappers>

    </configuration>

    typeAliases--取别名

        typeAliases标签定义了实体类的别名,写了之后可以在配置文件例如<select>标签中的属性就可以不用写实体的具体路径直接用别名就可以了,可以有两种方法:

     <typeAliases>

    <typeAlias alias="Student" type="com.java1234.model.Student"/>

    </typeAliases>

    这种方法适用性不强,如果有很多实体则需要写很多这样的别名,不方便。

    <typeAliases>

    <package name="com.java1234.model"/>

    </typeAliases>

    这种方法定义的别名就是model包下对应的实体类名称,只用定义一次就可以。

    environments--使用环境

          从上面看,我们知道<environments>下面可以配置多个<environment>元素节点,而每个<environment>节点我们可以配置两个东西,一个是事务管理器配置<transactionManager>,另一个是数据源配置<dataSource>。

    l  默认的环境ID(比如:default="development")

    l  每个 environment 元素定义的环境 ID(比如:id=”development”),每个环境的模式可以不一样,development : 开发模式    work : 工作模式  test :测试模式。

    那么如何理解environments呢?

           假如我们系统的开发环境和工作环境所用的数据库不一样(这是肯定的), 那么可以设置两个environment, 两个id分别对应开发环境(development)和工作环境(work),那么通过配置environments的default属性就能选择对应的environment了, 例如,我将environments的deault属性的值配置为development, 那么就会选择development的environment。

    transactionManager --事务管理器

    事务管理器有两种:type="[ JDBC | MANAGED ]":

    JDBC:这个配置就是直接使用了JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。

    MANAGED :这个配置从来都不提交和回滚一个连接,而是让容器来管理事务的整个生命周期(比如JEE应用服务的上下文)。默认情况下他会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。

    如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

    dataSource--数据源

    dataSource元素使用标准的JDBC数据源接口来配置JDBC连接对象的资源。

    三种内建的数据源类型:type=[ UNPOOLED | POOLED | JNDI ]

    UNPOOLED这个数据源的实现是每次被请求时打开和关闭连接。速度会有一些慢,适用于简单的应用程序。

    这种类型的数据源只需要配置下面的6种属性(最后一项为可选):

    driver

    JDBC驱动名

    url

    JDBC URL地址

    username

    数据库用户名

    password

    数据库密码

    defaultTransactionIsolationLevel

    默认的链接事务隔离级别

    driver.encoding

    utf-8(可选项)

    POOLED这是JDBC链接对象的数据源连接池的实现,用来避免创建新的链接实例时必要的连接和认证时间。适用于当前Web应用程序用来快速响应请求

    这种类型的数据源除了需要配置UNPOOLED中的基础配置外,还可以配置下面的内容:

    poolMaximumActiveConnections

    在任意时间正在使用链接的数量

    poolMaximumIdleConnections

    任意时间存在的空闲连接数

    poolMaximumCheckoutTime

    在被强制返回之前,连接池中被检查的时间,默认值为20000毫秒

    poolTimeToWait

    给连接池一个打印日志状态机会的低层次设置,还有重新尝试获取连接,这些情况往往会需要很长时间。为了避免连接池没有配置时静默失败。默认值20000毫秒

    poolPingQuery

    发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。默认为“NO PING QUERY SET”,这会引起许多数据库驱动连接由一个错误信息而导致失败

    poolPingEnabled

    这是开启或禁用侦测查询,如果开启,必须用一个合法的SQL语句,设置poolPingQuery属性,默认值为false

    poolPingConnectionsNotUsedFor

    用来配置poolPingQuery多长时间被调用一次。可以被设置匹配标准的数据库链接超时时间,来避免不必要的侦测。默认值0(也就是所有链接每一时刻都被侦测到,但仅仅当poolPingEnabled为true时适用)。

    在真实使用的时候往往只需要i配置driver,url,username,password就可以了,其他的都可以取默认值。

    JNDI这个数据源是为了使用如Spring或应用服务器这类的容器,容器可以集中或在外部配置数据源,然后设置JNDI上下文的引用。

    这个数据源只需要配置两个属性:

    initial_context

    用来从初始上下文中寻找环境(也就是initialContext.lookup(initial——context)),这是个可选属性,如果被忽略,那么data_source属性将直接以initialContext为背景再次寻找

    data_source

    这是引用数据源实例位置的上下文的路径,它会以initial_context查询返回的环境为背景来查找,如果initial_context没有返回结果时,直接以初始上下文为环境来查找。

    mappers--引入映射文件

    引入mapper.xml文件,与typeAliases类似,也可以采用一次性配置,将mappers包下的所有的mapper.xml文件都引人进来。

    <mappers>

    <package name="com.java1234.mappers"/>

    </mappers>

    2.mapper.xml详解

    <mapper namespace="com.java1234.mappers.StudentMapper">

    <resultMap id="StudentResult" type="Student">

    <id property="id" column="id"></id>

    <result property="name" column="name"></result>

    <result property="age" column="age"></result>

    </resultMap>

    <insert id="add" parameterType="Student"  >

    insert into t_student values(null,#{name},#{age})

    </insert>

    <update id="update" parameterType="Student">

    update t_student set name=#{name},age=#{age} where id=#{id}

    </update>

    <delete id="delete" parameterType="Integer">

    delete from t_student where id=#{id}

    </delete>

    <select id="findById" parameterType="Integer" resultMap="StudentResult">

    select * from t_student where id=#{id}

    </select>

    </mapper>

    关于Mapper.xml的配置我们在后面的数据库表的映射中再来讲。

  • 相关阅读:
    Linux 下安装nodejs
    Linux 下安装JDK
    ubuntu 把软件源修改为国内源
    vi/vim 命令使用详解
    不同浏览器css引入外部字体的方式
    npx 命令介绍
    ICloud没有密码怎么注销?
    装修后才知道的79件事
    天翼宽带政企网关B2-1P 如何获得超级管理员账号?
    家庭治疗偏头痛
  • 原文地址:https://www.cnblogs.com/zhuchuanliang/p/7853257.html
Copyright © 2011-2022 走看看