MyBatis全局配置文件

1、properties(这个标签基本上不太使用,了解)

1、mybatis可以使用properties来引入外部properties配置文件的内容
     resource是引入类路径下的资源
     url:引入网络网络路径或磁盘路径下的资源

新建一个file文件命名为dbconfig.properties,内容填充如下

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

mybatis-config.xml文件内容修改如下,添加了properties标签,将数据库信息动态传入。(11、16-19行进行了修改)

(在后面mybatis与spring整合时,这一块都交给了spring做)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4  "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6 <!--
 7  1、mybatis可以使用properties来引入外部properties配置文件的内容
 8  resource是引入类路径下的资源
 9  url:引入网络网络路径或磁盘路径下的资源
10  -->
11 <properties resource="dbconfig.properties"></properties>
12     <environments default="development">
13         <environment id="development">
14             <transactionManager type="JDBC" />
15             <dataSource type="POOLED">
16                 <property name="driver" value="${jdbc.driver}" />
17                 <property name="url" value="${jdbc.url}" />
18                 <property name="username" value="${jdbc.username}" />
19                 <property name="password" value="${jdbc.password}" />
20             </dataSource>
21         </environment>
22     </environments>
23     <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
24
25     <mappers>
26         <mapper resource="EmployeeMapper.xml" />
27     </mappers>
28 </configuration>

2、settings

2.1、mapUnderscoreToCamelCase的使用

之前由于字段名没有和数据库中的对应上,lastName获取到的是null(如下图),使用mapUnderscoreToCamelCase可以使用驼峰命名法,需要将默认值FALSE改为TRUE即可使用了。

将以下代表加入到全局配置mybatis-config.xml文件中

1  <settings>
2  <setting name="mapUnderscoreToCamelCase" value="TRUE"/>
3  </settings>

再次进行测试,可以取到值了

数据库的字段是last_name,而javabean是lastName,这种情况下使用nice~规范~

(数据库不区分大小写,故命名规则是单词间要加下划线;java区分大小写,命名规范是驼峰命名法)

3、typeAliases

别名处理器

在xml文件中应用全类名的地方,可以使用别名了,减少工作量

在EmployeeMapper.xml文件中,查询结果的返回值为com.atguigu.mybatis.bean.Employee,太长了

别名不区分带小写

处理方法如下:

(1)从Javabean中的Employee复制全类名放到全局配置文件mybatis-config.xml

1 <typeAliases>
2  <!--typeAlias:为某个java类型起类名
3      type:指定要起别名的类型全类名;默认别名就是类型小写:employee
4      alias:指定新的别名 5
6   -->
7      <typeAlias type="com.atguigu.mybatis.bean.Employee"/>
8  </typeAliases>

(2)在EmployeeMapper.xml文件中,将返回值改为默认别名即employee,再次测试,成功

或者使用alias指定别名

mybatis-config.xml,修改如下

1  <typeAliases>
2  <!--typeAlias:为某个java类型起类名
3      type:指定要起别名的类型全类名;默认别名就是类型小写:employee
4      alias:指定新的别名
5
6      -->
7      <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/>
8  </typeAliases>

EmployeeMapper.xml修改如下

1 <select id="getEmpById" resultType="emp">
2         select * from tb1_employee where id = #{id}
3 </select>

运行成功!

如果每次取别名,都用typeAliases就每次只能为一个类型取别名,太麻烦了。使用批量取别名来解决这一问题

package:为某个包内下的所有类批量取别名
name:指定包名(为当前包及下面所有的的后代包的每一一个类都起一个默认别名(类名小写)

将全局文件中代码修改如下:

1 <typeAliases>
2      <package name="com.atguigu.mybatis.bean"/>
3  </typeAliases>

将EmpolyeeMapper.xml更改如下

1  <!-- resultType可以写成Employee或employee,别名不区分大小写 -->
2     <select id="getEmpById" resultType="Employee">
3         select * from tb1_employee where id = #{id}
4     </select>

如果使用package,容易产生别名冲突,从而报错

解决方法:Javabean中使用一个注解,为这个类名指定一个新的别名

@Alias("emp")

并修改EmployeeMapper.xml中的返回值,当然别名不区分大小写

1 <select id="getEmpById" resultType="emp">
2         select * from tb1_employee where id = #{id}
3 </select>

运行成功!

根据文档查看,我们可以看到很多已经取好的别名

我们自己设置的别名一定不能和下面的别名重复

写全类名比较适合查看按住crtl+鼠标点击,即可查看javabean,这样可能会比较方便一些。

4、typeHandlers(粗略介绍,后面再仔细看)

类型处理器,在数据类型和java映射时使用

日期处理:

NOTE If you use classes provided by JSR-310(Date and Time API), you can use the mybatistypehandlers-jsr310.(官方文档中的一句话)

官方下载地址:https://github.com/mybatis/typehandlers-jsr310

想要更丰富的类型这样来注册

<typeHandlers>
  <typeHandler handler="org.apache.ibatis.type.InstantTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.OffsetDateTimeTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.OffsetTimeTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.ZonedDateTimeTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.YearTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.MonthTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.YearMonthTypeHandler" />
  <typeHandler handler="org.apache.ibatis.type.JapaneseDateTypeHandler" />
</typeHandlers>

但是在mybatis3.4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的。

5、plugins

插件

现在先简单了解,到mybatis运行原理以后,对mybatis运行机制了解后详细讲解。

先将四大对象混个眼熟。

Executor 执行器

ParameHandler 参数处理器

ResultSetHandler 结果集处理器

StatementHandler  sql语句处理器

6、environments

environments:环境们,mybatis可以配置多种环境,default指定使用某种环境,可以达到快速切换
environment:配置一个具体的环境信息,必须有transactionManager和dataSource才完整,id代表当前环境的唯一表示
    transactionManager:事务管理器;
          type:事务管理器的类型,有JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory);
          自定义事务管理器:实现TransactionFactory接口,type指定为全类名

dataSource:数据源;
       type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)|POOLED(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)

自定义数据源:实现DataSourceFactory接口,type指定为全类名

Ctrl + Shift + T:快捷键打开openType,搜索configuration

这里边注册了很多别名

7、databaseIdProvider

支持多个数据库厂商

这个功能支持需要全局配置文件中添加

<databaseIdProvider type="DB_VENDOR" />

此标签于本人可能用不到先不写。。

8、mappers

mappers将sql映射注册到全局配置中
     注册配置文件:
  resource:应用类路径下的sql映射文件
  url:引用网路路径或者磁盘路径下的sql音色文件
    file:///var/mapper/AuthorMapper.xml
 注册接口
  class:引用(注册)接口,
    1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下
    2、没有sql映射文件,所有的sql都是利用注解写在接口上;

resource属性:

新建一个包,将EmployeeMapper.xml放进去,然后修改配置文件内容resource改为全类名

1 <mappers>
2         <mapper resource="mybatis/mapper/EmployeeMapper.xml" />
3 </mappers>

class属性:

EmployeeMapperAnnotation接口代码:

 1 package com.atguigu.mybatis.dao;
 2
 3 import org.apache.ibatis.annotations.Select;
 4
 5 import com.atguigu.mybatis.bean.Employee;
 6
 7 public interface EmployeeMapperAnnotation {
 8
 9     @Select("select * from tb1_employee where id = #{id}")
10     public Employee getEmpById(Integer id);
11 }

在测试文件中再写一个测试方法

 1 public void test02() throws IOException {
 2         SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
 3         SqlSession openSession = sqlSessionFactory.openSession();
 4
 5         try {
 6             EmployeeMapperAnnotation mapper = openSession.getMapper(EmployeeMapperAnnotation.class);
 7             Employee empById = mapper.getEmpById(1);
 8             System.out.println(empById);
 9         }finally {
10             openSession.close();
11         }
12
13     }

运行成功!

不过还是写在xml文件上便于维护,推荐必要重要的Dao接口写sql映射文件,不重要的简单的Dao接口为了开发快速可以使用注解。

由于mapper都是一个一个注册的,比较麻烦,故而还有批量注册的方法。

使用package,name属性中要写包名,基于注解版没有问题,但是,写了映射文件的可能找不到,故而将映射文件放入同一个包下,文件名和接口名是一样的,这样才可以批量注册。

以后都将接口和xml放在一起,但是为了规整,在conf下建一个与接口文件一样路径的包

虽然看起来不是在一个路径下,实际打开源码包都都会放在bin的路径下,bin路径被我们叫做类文件的开始。

原文地址:https://www.cnblogs.com/iris-/p/11732076.html

时间: 2024-10-30 01:33:10

MyBatis全局配置文件的相关文章

mybatis全局配置文件的总结

mybatis全局配置文件SqlMapConfig.xml中的批量操作 typeAliases,可以批量的定义别名,然后在mapper.xml中的parameterType和resultType中使用 1.1 单个别名的定义 1.2 批量别名的定义 2.mapper加载映射配置 2.1 单个映射文件的配置 2.2 批量映射文件的加载(必须使用mapper代理的方式,满足自动代理的条件,并且mappere.java和mapper.xml的名称相同且在同一个目录下)

Mybatis学习(3)关于mybatis全局配置文件SqlMapConfig.xml

比如针对我这个项目的mybatis全局配置文件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"> &l

MyBatis全局配置文件mybatis-config.xml如何写

MyBatis全局配置文件mybatis-config.xml 1.在官方下载的mybatis-3.4.5.zip压缩包中,有我们需要的mybatis核心jar包和mybatis的快速入门的pdf文件 在mybatis的快速入门的pdf文件中,复制如下代码到我们项目中的mybatis-config.xml文件中 以上就是我们需要的简单的全局配置文件的格式 2.按住CRTL+鼠标左键点击全局配置文件的约束文件的链接: http://mybatis.org/dtd/mybatis-3-config.

5.MyBatis 全局配置文件详解(sqlMapConfig.xml)

1.1     Mybatis的全局配置文件 SqlMapConfig.xml是mybatis的全局配置文件.它的名称可以是任意命名的. 1.1.1 配置内容 SqlMapConfig.xml的配置内容和顺序如下(顺序不能乱): Properties(属性) Settings(全局参数设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境信息集合) environment(

Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发 MyBatis的全局配置文件SqlMapConfig.xml,配置内容和顺序如下: properties(属性) setting(全局配置参数) typeAliases(类名别名) typeHandlers(类名处理器) objectFactory(对

java框架---MyBatis全局配置文件

以下均放在configuration标签下 1.properties标签 可以使用properties标签引入外部properties配置文件的内容 两个属性: resource:引入类路径下的资源 url:引入网络路径或者磁盘路径下的资源 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3

mybatis 全局配置文件的相关设置

1.使用 properties 标签来引入外部 properties 配置文件的内容: resource:引入类路径下的资源 url:引入网络路径下或者磁盘路径下的资源 注:将之前编写的代码进行如下的修改后,输出依然没有任何问题. 2.settings 设置: 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的 运行时行为.(这里用一个例子来介绍,之后的博文中会一点一点说明.) 注: mapUnderscoreToCamelCase 参数设置是将字段中的下划线命名规范转变

Mybatis的全局配置文件标签介绍(mybatis-config.xml)

全局配置文件中本人只记录了常用的几个  typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, databaseIdProvider 这几个只是作为了解,没做记录 mybatis-config.xml: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLI

Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析

经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西: 配置内容 作用 <properties> 用来加载属性文件 <settings> 用来设置全局参数 <typeAliases> 用来设置类型的别名 <typeHandlers> 用来设置类型处理器 <objectFactor