我们在编写 xml 文件的时候,在 eclipse 中点击 alt+/ 就会有相关标签的提示,如果你在你的 xml 中没有该提示的话,那么就要自己去引入该约束,具体步骤如下:
<1> 找到该 dtd 约束文件的位置:如下图所示,位于 jar 包中的以下路径中。然后找到 jar 包所在,解压 jar 包,将这两个文件取出来。
<2> 看看 xml 中的头部的几行代码:http 网址代表了该 dtd。
- <?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">
<3> 点击 eclipse 中的 window–>preferences–>xml–>xml catalog:
key 填写那个 xml 头部的 url,keytype 选择 URL,location 则选择刚才解压好的两个 dtd 文件。
完成之后,关闭 xml 文件,再打开按 alt+/ 就有提示了。
我们之前的一些配置是自己手写的,类似于下的数据库连接时的一些配置:
- <property name="driver" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
- <property name="username" value="root" />
- <property name="password" value="123456" />
其实我们也可以先配置好,如下的配置文件:
- jdbc.driver = "com.mysql.jdbc.Driver"
- jdbc.url = "jdbc:mysql://localhost:3306/mybatis"
- jdbc.username = "root"
- jdbc.password = "123456"
再通过导入文件的方式来读取配置,使用 properties 标签如下:
- <!--
- properties标签可以引入外部的配置文件,properties类型的文件
- resource导入类路径下的配置文件,类路径就是src这样的源文件夹
- url来导入网络路径或者磁盘路径下的文件
- 通过${key}来读取properties类型的配置文件的内容
- -->
- <properties resource="dbconf.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.username}"
- />
- <
- property
- name
- =
- "password"
- value
- =
- "${jdbc.password}"
- />
- </dataSource>
- </environment>
- </environments>
在 MyBatis 中,这个标签是非常重要的一部分,它可以影响到运行时的效果,在 MyBatis 的配置文件中,关于 settings 的配置内容很多,所以我们就举一个参数的设置来看看:
- <settings>
- <!-- 是否开启自动驼峰命名规则映射:即将数据库中的A_COLUMN映射成经典java属性命名aColumn的类似映射-->
- <
- setting
- name
- =
- "mapUndersourceToCamelCase"
- value
- =
- "true"
- >
- </settings>
例如:你在数据库中的字段是 LAST_NAME,在 javaBean 中的属性的名字是 lastName,这个时候我们做的查询就不用单独去取别名了,直接就能查询到,这也是为了编码规范。
我们在开发的时候对于一些经常用到的长字段类型名,我们在写长字段名字很麻烦,为了在之后的方便,我们可以给这个长字段起一个别名,例如在 sql 映射文件中我们经常用到的 java 类的全名:package.javaname
- <select id="getStuById" resultType="com.bean.Student">
1、对于上面的 com.bean.Student 我们就可以用 typeAliases 标签来起别名,像下面这样:
- <typeAliases>
- <!--type填的是指定的全类型名,如果没有alias指定,默认就是类名的小写,别名不区分大小写,alias指定别名-->
- <
- typeAlias
- type
- =
- "com.bean.Student"
- alias
- =
- "Student"
- />
- </typeAliases>
2、我们也可以批量给一个包及其子包的内容修改别名:
- <typeAliases>
- <!--批量修改一个包下的类:默认为所有的类起小写类名的别名-->
- <package name="com.bean" />
- </typeAliases>
3、也可以使用注解的方式给你想指定别名的类指定:
- @Alias("别名")
- public class...{
- }
其实我们之前学过的一些 java 的关键字,一些基本数据类型也都是起过别名的:
这里我们简单了解一下是干啥的?这个类型处理器是对 jdbc 的类型和 java 的类型进行转换用的,类似预官方文档的内容:从左到右分别为 Type Handler,Java Types,JDBC Types
mybatis 中允许插件去拦截一下几大对象的方法:
mybatis 可以配置多个 environment,即 environments 中是有 environment 标签来配置具体的 环境的,如下代码:
- <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.username}"
- />
- <
- property
- name
- =
- "password"
- value
- =
- "${jdbc.password}"
- />
- </dataSource>
- </environment>
- </environments>
environments 中的 default 是默认的环境,可以达到快速切换。
environment 中的 id 是指定环境的 id,环境的唯一标识。比如:开发用的起名为 develop,测试用的是 test。
environment 中又必须要有 transactionManager 和 dataSource 两个标签,transactionManager:事务管理器,type:事务管理器的类型,有 JDBC|MANAGED 两种类型,也可以自定义(了解即可)。
dataSource:数据源,type:UNPOOLED|POOLED||JNDI(了解即可),也可以自定义。
即支持多种的数据库版本,支持不同的 sql 语句,实现了可移植性。
比如我们之前的查询是在 mysql 下进行的,现在我们也想通过 Oracle 数据库来进行查询,具体的操作如下:
1、在全局配置文件中加入数据库的厂商标识,其中 DB_VENDOR 的作用就是可以获取到不同数据库厂商的标识,比如 MySQL 、Oracle …….
- <databaseIdProvider type="DB_VENDOR">
- <!--起别名-->
- <
- property
- name
- =
- "MySQL"
- value
- =
- "mysql"
- />
- <
- property
- name
- =
- "Oracle"
- value
- =
- "oracle"
- />
- </databaseIdProvider>
2、然后配置好 Oracle 的驱动、URL、用户名、密码等信息。
3、新建一个 environment 模块,取名为 "oracle",之前的取名为 "mysql"。将 environments 的 defalut 设置为 oracle。
4、修改 sql 映射文件中的 select 标签,修改为:
- <
- select
- id=
- "getStuById"
- resultType=
- "com.bean.Student"
- databaseId=
- "oracle"
- >
将 sql 映射注册到全局配置文件中,一个一个的注册,具体如下:
- <mappers>
- <!-- sql映射文件注册到全局配置文件
- resource:引入类路径下的配置文件
- url:网络路径或磁盘路径下的配置文件
- class:引用(注册)接口,写接口的全名
- 1、有sql映射文件,必须和接口同名,与接口在同一目录下
- 2、没有sql映射文件 ,所有的sql都是利用注解写在接口上
- 推荐:重要的DAO接口要用sql映射文件
- 不重要的或者简单的用注解
- -->
- <mapper class=""/>
- <mapper url=""/>
- <mapper resource="studentmapping.xml"/>
- </mappers>
注解的接口如下:
批量注册:将一个包下面的进行注册
- <package name="包的路径" />
来源: http://m.blog.csdn.net/jin970505/article/details/78954916