本次全部学习内容:MyBatisLearning

 
全局配置文件(本次案例中):
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAAZCAIAAACDyzqnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADIElEQVR42u2ZXW7aQBCAuU6vwAl6EqtVrpCXPgSlVVqshFBI8yeaKDQkFCHFUqVWfe0B0pfykB9RRSEQIRLwD5bosGvsWe/agCEUlB2NtuuNvTs738zsNon1pCyCxKQLJCcpkpPkJGUxOP3UVoUqnTVfnL6fvTMt26fn5ddTRaUpMUWba89U1HgMRFHh37haeaJVRvWDgNO38hrP6c+P5d/DUcGqjgxb3LWPuoN3BJkqun88S6LFQ98sz8C55HRWShqmTVU3u6S1L38lAdV5+ZVW+hDimsGasLnw5RlOcRDWE04wR/MPYeQtrykRpoE5ng7OdDiVTtfbRhf0xculpTfZtm5DC/22YXcMu1xcD4zAMXbGcCK1BZtL5lKjuQqHy0T+m3dOhS/ph073oWMlMgXA0+r0gUGfDHZPC5tjOgiVIC9FWE4a6xf6gIec/MJljH7IVdowB2NLXEvJB6qCrWOKZgXHkPsTQRgRGz0rSJdMrjnGOwPYDZNwOjzKNh+7RC1KCFro05F8PjPsUMALM/D6DwGc0ItoxHm5oioDj7CveXO744Gc0OLMPKhKoqMILx5Hb+Io4RdyvvI+RqcsdQ67xYk47X3ebrQsqhQStI2WSUdyB59GuydpguhmNuAzeeAk9x32Wy6jKmyt5OmGFzL3c1/aBnMK3AsfqnEUVuH9CTht7e/XmiZVN59qTYuO7Ob2xjgkxuDkVSC/q3DssvcwAacgUAJOfDgsFKfNnYObexOUErq5NygtOpjZzQXmEb5joWwX1QoRJ6Y09ISJhc4AfBwwD/6S5Nz3uLrHERnCKWgvXLUUls/pc1K3jqp142/dpPe9at2k971qw4Dx1PbhkIrnO6O8Q9mXLIK08J/ZyFXOFIrC5JMS8B824Y0h5B4xEifGEG8vqGAzBvvrybQ5vf94fF0zQK+gvYOOfn2nQ/+KtMlsfj5uu766N3OZ1c09kNNq+uTiVqd6SfTi1nAf19LHz5UTruxsFf0vnBKpYmKjuLJRhM5KirZf6SDo29TJ880nVNlnCakn/66xwL8vlyI5SZGcJCcpkpOUkeQfyTeHQq0XY1kAAAAASUVORK5CYII=" alt="" />
 
配置内容and顺序如下:
properties(属性)
settings(全局配置参数)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
  environment(环境子属性对象)
    transactionManager(事务管理)
    dataSource(数据源)
mappers(映射器)
 
 
 
 
properties(属性):
将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。
在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。
 
属性
property标签
resource
url
 
resource:相对于工程的路径
db.properties内容:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/shopping
jdbc.username=root
jdbc.password=
在SqlMapConfig.xml加载db.properties
     <!-- 加载属性文件 -->
<!-- properties -->
<properties resource="db.properties"></properties>
.......
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
.......
property标签
      <!-- 加载属性文件 -->
<!-- properties -->
<properties resource="db.properties">
<!-- 可以配置一些属性名和属性值 -->
<property name="jdbc.root" value="root"/>
</properties>
注意: MyBatis 将按照下面的顺序来加载属性:
在 properties 元素体内定义的属性首先被读取。
然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
 
因此,通过parameterType传递的属性具有最高优先级,resource或 url 加载的属性次之,
最低优先级的是 properties 元素体内定义的属性。
 
url:使用绝对路径
 
 
settings全局的参数配置:
mybatis运行时可以调整运行参数
如:二级缓存,延迟加载,驼峰命名等.......
全局参数会影响mybatis的运行行为
 
 
 
typeAliases(类型别名)(important)
1.在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。
2.如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
 
 
默认支持的别名:

自定义别名:
 
单个定义别名:
在全局配置文件中:
type:起别名的全类名
alias:起的别名
<!-- 别名 -->
<typeAliases>
<!-- 针对单个别名的定义 -->
<typeAlias type="com.MrChengs.po.User" alias="user"/>
</typeAliases>
找到UserMapper.xml:
修改
     <!-- 根据id查询 -->
<!-- public User findUserById(int id) throws Exception; -->
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id=#{id}
</select>
然后在找到其运行文件进行测试是可以查询到
把user修改之后,得不到查询结果,还会有异常
 
 批量起别名:

<typeAliases>
<!-- 批量起别名 -->
<!-- 指定自动扫描的po类,自动定义 别名,别名就是类名(首字母大小写都可以)-->
<package name="com.MrChengs.po"/>
</typeAliases>

其余代码不变进行测试!!!

 
 
 
 
typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和java类型的转换。
通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.
 
类型处理器用于java类型和jdbc类型映射,如下:
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>

mybatis支持的:

 
 
 mappers(映射器)

mapper的映射配置
 
单个映射文件的加载:
使用resource加载单个文件:

     <mappers>
<mapper resource="sqlmap/User.xml"/>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
单个加载:
通过class:
     <!-- 加载 映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/> <!-- 通过mmapper接口加载映射文件 -->
<!-- 遵循规范:需要将mapper接口类和mapper.xml映射文件名保持一致,且在同一个目录 -->
<!-- 前提要使用mapper代理方法 --> <mapper class="com.MrChengs.mapper.UserMapper"/>
</mappers>

此时是可以测试成功的

 
 
 批量加载:
     <mappers>
<mapper resource="sqlmap/User.xml"/> <!-- 批量加载 -->
<!-- 指定mapper接口的包名,自动扫描包下的 -->
<!-- 遵循规范:需要将mapper接口类和mapper.xml映射文件名保持一致,且在同一个目录 -->
<!-- 前提要使用mapper代理方法 -->
<!-- 推荐使用 -->
<package name="com.MrChengs.mapper"/>
</mappers>

此时是可以测试成功的

 

MyBatis框架(4)全局文件的更多相关文章

  1. Mybatis框架基于映射文件和配置文件的方式,实现增删改查,可以打印日志信息

    首先在lib下导入: 与打印日志信息有关的架包 log4j-1.2.16.jar mybatis架包:mybatis-3.1.1.jar 连接数据库的架包:mysql-connector-java-5 ...

  2. Mybatis框架中Mapper文件传值参数获取。【Mybatis】

    1.参数个数为1个(string或者int) dao层方法为以下两种: /** * 单个int型 */ public List<UserComment> findByDepartmentI ...

  3. MyBatis框架的文件配置

    第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...

  4. MyBatis框架的使用及源码分析(四) 解析Mapper接口映射xml文件

    在<MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder> 一文中,我们知道mybat ...

  5. (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql

    http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...

  6. idea插件(mybatis框架下mapper接口快速跳转对应xml文件)亲测好用!

    我相信目前在绝大部分公司里,主要使用的框架是S(spring)S(spring MVC)M(mybatis),其中mybatis总体架构是编写mapper接口,框架扫描其对应的mapper.xml文件 ...

  7. mybatis框架中XxxxMaper.xml的文件

    我们知道在mybatis框架中,config.xml中会关联到许多的XxxxMapper的xml文件,这些文件又对应着一个个的接口,来观察下这些xml文件 从以下这个文件为例子: <?xml v ...

  8. 【mybatis xml】数据层框架应用--Mybatis 基于XML映射文件实现数据的CRUD

    使用MyBatis框架进行持久层开发 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索. MyBa ...

  9. Hibernate框架与Mybatis框架的对比

    学习了Hibernate和Mybatis,但是一直不太清楚他们两者的区别的联系,今天在网上翻了翻,就做了一下总结,希望对大家有帮助! 原文:http://blog.csdn.net/firejuly/ ...

  10. Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)

    依赖导入以及框架整合 (1).打开项目的pom.xml文件,声明依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" x ...

随机推荐

  1. sql server存储过程中SELECT 与 SET 对变量赋值的区别 转自Theo

    SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT. 对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们 并没有注意,其实这 ...

  2. Swift构造器链

    IDE:Xcode Version7.3.1 指定构造器: 1>名字为init的方法前没有前缀(子类重写时有override除外), 2>一个类中至少有一个指定构造器,其必须初始化类中的所 ...

  3. Node.js学习笔记(四) --- fs模块的使用

    目录 . fs.stat 检测是文件还是目录 . fs.mkdir 创建目录 . fs.writeFile 创建写入文件 . fs.appendFile 追加文件 . fs.readFile 读取文件 ...

  4. 从服务器下载文件 DownloadServlet()

    .html代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...

  5. Django 常用字段和参数

    一.ORM字段 类型 说明 AutoField 一个自动增加的整数类型字段.通常你不需要自己编写它,Django会自动帮你添加字段:`id = models.AutoField(primary_key ...

  6. 前端使用nginx上传文件时,进度获取不对

    在使用iview时,上传文件获取进度时onUploadProgress返回数据不对. 原因是开启了nginx代理,本地上传时先传到本地nginx然后在传到服务器,导致获取进度不对 解决:在nginx的 ...

  7. 移动端Hybird的网络层优化策略

    一.前端代码策略:域名切换(多域名部署),解决DNS缓存及域名劫持 二.客户端策略 客户端在空闲时ping cdn节点域名列表中的域名,测量延时.丢包等数据.如果延迟 > xxx,丢包 > ...

  8. .NET开源工作流RoadFlow-Bug修改-1.8.2子流程接收者始终为发送者

    1.8.2及以前版本中子流程待办任务的处理者始终为上一步骤发送者BUG的处理: 修改类:RoadFlow.Platform.WorkFlowTask中如下图红框中的内容即可:

  9. 使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录

    这几天在使用SDL2,之前一直都没有错,直到上午把项目搬了个地方.结果一直出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” . 看了网 ...

  10. Thinkphp中在本地测试很好,在服务器上出错,有可能是因为debug缓存的问题

    define('APP_DEBUG',false); 这个设置从true改为false后,一定要清空缓存,否则会出错.