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的配置我们在后面的数据库表的映射中再来讲。

时间: 2024-08-11 09:49:39

MyBatis学习笔记2--配置环境详解的相关文章

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不

IntelliJ IDEA 2017 MySQL5 Spring 4 Mybatis 3 Dubbo Elastic-job 配置步骤详解(二)

前言    继续上一篇安装教程 首先是MySQL绿色版安装之后其他组件安装,如果篇幅较长会分为多篇深入讲解,随笔属于学习笔记诸多错误还望指出 共同学习. MySQL 5.7 绿色版   我本地安装的是MySQL5.7.16,资源百度搜一下大批大批的都有 .exe版本的我没有安装过不过看教程似乎不难这里不做太多说明了,简单说一下绿色版的安装步骤: 首先下载MySQL 5.7.16之后解压缩,需要注意下解压缩的地址因为后续需要把这个地址配置到环境变量中,所以不要随意放个地方. 创建好文件夹之后需要修

Linux学习笔记—— 用户管理命令详解

 用户管理命令详解  用户管理: useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage 添加用户: useradd [options] USERNAME    -u (UID)   手动指定UID -g (GID)  (基本组) -G, ...     (附加组) 可以有多个,彼此之间用,号隔开 -c "COMMENT"         注释信息     -d /path/to/somedirectory  指定家目录 -s

IOS学习笔记——ViewController生命周期详解

在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它.ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调.在IOS中,有两类ViewController,一类是显示内容

【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处理,即处理异常代码 } 代码区如果有错误,就会返回所写异常的处理. 首先要清楚,如果没有try的话,出现异常会导致程序崩溃.而try则可以保证程序的正常运行下去,比如说: try { int i = 1/0; } catch(Exception e) { ........ } 一个计算的话,如果除数

Linux学习笔记——用户及权限详解

用户及权限详解    用户.组.权限 安全上下文(secure context): 权限: r   w   x  文件: r:可读,可以使用类似cat等命令查看文件内容: w:可写,可以编辑或删除此文件: X:可执行,exacutable,可以命令提示符下当作命令提交给内核运行:  目录: r:可以对此目录执行ls以列出内部的所有文件: w:可以在此目录创建文件: x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息: rwx: r--:只读 r-x:读和执行 ---:无权限

CSS学习笔记(9)--详解CSS中:nth-child的用法

详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是":nth-child". 下面我将用几个典型的实例来给大家讲解:nth-child的实际用途: Tips:还用低版本的IE浏览器的哥们请绕过! :nth-child(2)选取第几个标签,"2可以是你想要的数字" .demo01 li:nth-child(2){background:#090} :nth-child(n

C#学习笔记二: C#类型详解

前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. 再会有三篇博客  这个系列的就会结束了. 也算是自己对园子中@Learning Hard出版的<<C#学习笔记>>的一个总结了. 博客内容基本上都是白天抽空在公司写好的了, 但是由于公司内部网络不能登录博客园所以只能够夜晚拿回来修改,  写的不好或者不对的地方也请各位大神指出. 在下感

MySQL学习笔记之MySQL安装详解

前言 虽然现在NoSQL发展迅速,但MySQL还是非常受欢迎的,成千上万的公司依旧采用LAMP OR LNMP的搭配来进行开发,因此MYSQL的学习还是有一定的必要. 安装环境:Windows 7,需要.NET FRAMEWORK 4.0的支持 MySQL版本:5.6.10.1 安装 1.双击SETUP安装文件开始安装,前面的三步都是点“下一步”即可. 2.到第四步出现如下图所示界面. 这步我是选择Custom安装类型,比较自由,然后指定安装目录和存放数据目录. 3.接下来的几步都可以直接“下一