ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis-配置

2022-01-05 15:31:52  阅读:179  来源: 互联网

标签:JDBC 数据源 配置 设置 mybatis properties 属性


mybatis的配置都写在核心配置文件 mybatis-config.xml 中,这个文件包含了会深深影响 MyBatis 行为的设置和属性信息。

所有配置的内容如下:

configuration(配置)

properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)

在配置文件中的配置必须按照以上顺序,否则会报错

属性(properties)

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置

第一步:在资源目录下新建一个 db.properties 属性配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?createDatabaseIfNotExist=true&useSSL=false
username=root
password=123456

第二步:将 properties 属性文件导入到核心配置文件中

<properties resource="db.properties"/>

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

注意:除了以上方式以外还可以将属性设置在 properties 元素的子元素中,并且当两种方式的属性出现同名时,会优先采用上面那种方式设置的属性

<properties resource="db.properties">
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</properties>

设置(settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为.

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写.

第一种:这样配置后,可以在任何使用 com.lv.pojo.User 的时候用 user 代替它,好处是可以DIY名字.

<typeAliases>
    <typeAlias type="com.lv.pojo.User" alias="user"/>
</typeAliases>

第二种:指定一个包名,mybatis 会搜索包下所有的 java bean 在没有注解的情况下,将它的首字母小写的非限定类名作为它的别名,好处是java bean过多时可以简化代码

<typeAliases>
    <package name="com.lv.pojo"/>
</typeAliases>

如果想DIY别名可以在javabean加上注解,它的别名就会变成注解中设置的名字

//实体类
@Alias("cnm")
public class User {
    private int id;
    private String name;
    private String pwd;
}

类型处理器(typeHandlers)

MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。

对象工厂(objectFactory)

每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认无参构造方法,要么通过存在的参数映射来调用带有参数的构造方法。 如果想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现。

环境配置 (environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中,必须指定一个作为默认的运行环境(通过default指定)

environment 代表具体的一套环境,通过设置id进行区别,确保id唯一性

transactionManager 事务管理器(type="[JDBC|MANAGED]")

JDBC : 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。

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

dataSource 数据源(type="[UNPOOLED|POOLED|JNDI]")

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

unpooled: 这个数据源的实现只是每次被请求时打开和关闭连接。

pooled: 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

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

数据源也有很多第三方的实现,比如dbcp,c3p0,druid等等...

<environments default="test">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
    <environment id="test">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

映射器(mappers)

定义映射sql语句文件

mapper文件引入的四种方式

第一种方式:

<!--    使用相对于类路径的资源引用-->
    <mappers>
        <mapper resource="com/lv/dao/UserMapper.xml"/>
    </mappers>

第二种方式:

<!--    使用完全限定资源定位符(URL)file:/// 后面写绝对路径-->
    <mappers>
        <mapper url="file:///C:\Users\xxx\IdeaProjects\mybatis-Study\mybatis-04\src\main\java\com\lv\dao\UserMapper.xml"/>
    </mappers>

第三种方式:

<!--    使用映射器接口实现类的完全限定类名 需要配置文件名称和接口名称一致,并且位于同一目录下-->
    <mappers>
        <mapper class="com.lv.dao.UserMapper"/>
    </mappers>

第四种方式:

<!--    将包内的映射器接口实现全部注册为映射器,但是需要配置文件名称和接口名称一致,并且位于同一目录下-->
    <mappers>
        <package name="com.lv.dao"/>
    </mappers>

mapper文件的编写

namespace中文意思:命名空间,作用如下:
1. namespace和子元素的id联合保证唯一 , 区别不同的mapper
2. 绑定DAO接口,namespace的命名必须跟某个接口同名,接口中的方法与映射文件中sql语句id应该一一对应
3. namespace命名规则 : 包名+类名

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lv.dao.UserMapper">

</mapper>

标签:JDBC,数据源,配置,设置,mybatis,properties,属性
来源: https://www.cnblogs.com/lv1024/p/15766615.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有