SSM重温——MyBatis(二)MyBatis配置

一、概述

MyBatis配置文件元素

二、properties属性

properties属性可以给系统配置一些运行参数,可以放在XML文件或者properties文件中,而不是放在java编码中,这样的好处在于方便参数修改,而不会引起代码的重新编译。一般而言,MyBatis提供了3中方式让我们使用properties,它们是:

  • property子元素
  • properties文件
  • 程序代码传递

下面展开讨论。

2.1 property子元素

<?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>
        <property name = "jdbc.driver" value = "com.mysql.jdbc.Driver">
        <property name = "jdbc.url" value = "jdbc:mysql://localhost:3306/ssm">
        <property name = "jdbc.name" value = "root">
        <property name = "jdbc.password" value = "123456">
    </properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.name}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
    </mappers>
</configuration>

如代码所示,现在properties中配置好jdbc连接数据库所需参数,然后在配置数据库连接时直接通关${参数名}调用值。

2.2使用properties文件

<?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>
    <!-- 1、mybatis使用properties来引入外部properties配置文件的内容 
    resource 引入类路径下资源 
    url 引入网络路径或磁盘路径下资源 -->
    <properties resource="db.properties"></properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.name}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
    </mappers>
</configuration>

 使用properties文件是一个比较普遍的方法,一方面这个文件十分简单,其逻辑就是键值对应,我们可以配置多个键值放在一个properties文件中,这些都是允许的,它方便日后维护。

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssm
jdbc.name = root
jdbc.password = 123456

配置文件内容如上所示。

2.3 使用程序传递方式传递参数

String resource = "mybatis-config.xml";
InputStream is;
inputStream in = Resources.getResourceAsStream("jdbc.propreties");
Properties props = new Properties();
props.load(in);
String username = props.getProperty("dataBase.username");
String password = props.getProperty("database.password");
// 解密用户和密码并在属性中重置
Props.put("dataBase.username", CodeUtils.decode(username));
Props.put("database.password", CodeUtils.decode(password));
is = Resources.getResourceAsStream(resource);
// 使用程序传递的方式覆盖原有的properties实行参数
SqlSessionFactory = new SqlSessionFactoryBuilder().build(is, props);

 这种方式用来将加密过的账户密码解密后重新作为参数传递。

settings一般不怎么设置,用到了查文档。

三、typeAliase 别名

用于类的权限定名称很长,需要大量使用的时候,总写那么长的名称不方便。在MyBatis中允许定义一个简写来代表这个类,这就是别名,别名分为系统定义别名和自定义别名。在Mybaits中别名由类TypeAliasRegistry去定义。注意,在MyBatis中别名不区分大小写。

3.1 系统定义别名

 3.2 自定义别名

可以直接根据权限定名定义

<TypeAliases><!-- 别名 -->
    <TypeAlias alias = "role" type = "com.learn.ssm.chapter4.pojo.Role">
    <TypeAlias alias = "user" type = "com.learn.ssm.chapter4.pojo.User">
</TypeAliases>

也可以直接通过包扫描 

<TypeAliases><!-- 别名 -->
    <package name = "com.learn.ssm.chater4.pojo"/>
</TypeAliases>

 四、environments(运行环境)

 在MyBatis中,运行环境主要的作用是配置数据库信息,它可以配置多个数据库,一般而言只需要配置其中的一个就可以了。 

它下面又分为两个可配置的元素:事务管理器(TransactionManager)、数据源(DataSource)。在实际生活中,大部分会采用Spring

对数据源和数据库的事务进行管理。

运行环境配置如下:

 <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.name}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

五、引入映射器的方法

 5.1 用文件路径引入映射器

<mappers>
    <mapper resource = "com/learn/ssm/chapter4/mapper/roleMapper.xml"/>
</mappers>

5.2 用包名引入映射器

<mappers>
    <package name = "com.learn.ssm.chapter4.mapper"/>
</mappers>

 5.3 用类注册映入映射器

<mappers>
    <mapper class="com.learn.ssm.chapter4.mapper.UserMapper"/>
    <mapper class="com.learn.ssm.chapter4.mapper.RoleMapper"/>
<mappers>

5.4 用UserMapper.xml 引入映射器

<mappers>
    <mapper>
        url="file:///var/mappers/com/learn/ssm/chapter4/mapper/roleMapper.xml"
    </mapper>
</mappers>

猜你喜欢

转载自blog.csdn.net/qq_41722272/article/details/82829047