Mybatis学习日志
在Mybatis深入学习的一周中,总感觉跟着师傅的视屏讲解什么都能懂,但实际自己操作的时候才发现自己一脸懵逼,不知道从何入手。但还好自己做了点笔记。在此记录一下自己浅度学习Mybatis遇到几个小问题。
1.个人感觉学习Mybatis过程中最好使用log4j 日志文件,这样在你自己测试代码的时候,能更好的看到Mybatis的运行过程。不使用的话,测试代码的时候如果代码正确他就只会输入结果,有时候这个结果你是知道的,相比较之下使用log4j你能看到一些过程,这样在学习中能更好的理解。




作为技术小白的我,也就只会用用log4j。首先是导入jar包,log4j 和slf4j的版本一定要对应,否则会报异常。其次是log4j的配置文件,代码如上,必须放置src目录下,然后就可以使用了。

这两个包是必须的,一个是mybatis的jar包,一个是连输mysql数据用的jar包
2.就是在配置Constructor 构造器的时候,大家在对应类的构造方式的后尽量使用Interger类似的对象数据类型,因为我在写构造器的时候用int类型返回数据库的id列他会报异常。原因是数据不匹配,至于具体的问题,师傅说是源于java反射机制,这里就不多说了。

3.Mapper映射代理对象,一般来说Mybatis核心配置文件中引入Mapper映射文件有三种方式:1:resource引入映射文件位置 2.class 引入代理对象类3.package引入代理对象所在的包(批量代理)

这里必须注意的是,class 和 package 引入代理对象时,必须把映射文件和接口类放在同一文件下,同时mapper映射文件中的语句id 必须对应接口的方法名称。否则代理对象不成功。


然后通过session对象调用getMapper就可以实现对象代理了。
4.一对多和多对多关系理解。 我在学习这一章节的时候,起初是通过sql语句和sql表来理解和思考处理这些关系。其实不然,处理多对多关系的时候,首先先分析类与类的关系或者说表与表的关系 这是必须的,其次在表对应的类中建立连接



这里P_oder对应Oder是一对一的关系,Product和P_oder是一对多的关系,这里分析好了,mapper里的语句处理就好解决了

这里是P_oder的mapper里实现三表联查,首先找到一对一联查 ,也就是从数据库找到数据返回给P_oder对象类里的Oder对象,ResultMap里首先放的是P_oder的基本类型,其次Association就是处理P_oder和Oder的关系,比如这里是根据p_oder里的p_id 对应Oder里的id,一对多的关系处理也是一样的原理,只不过 collection 里返回的就是一个集合了,这里也对应了一对多的关系。
5.在配置Mybatis核心配置的Settings 配置时,要导入两个jar包。

初学Mybatis的我在这里就掉坑里了,这里cglib的版本据我搜到的资料,应该是要小于asm版本的,我试过相同版本,调试报异常。这里和log4j 和slf4j不一样,log4j 和slf4j是需要相同版本。
6.Mybatis 二级缓存。 这里最绕的就是:当你启用二缓存,又有insert/update/delect数据处理,又关闭了insert/update/delect 刷新缓存时 。
如果你的数据处理语句在session.close() (向二级缓存刷入数据)的后面,那么二级缓存中是没有数据的。虽然我们关闭了二级缓存的数据刷新,也就是当执行数据处理语句时,二级缓存不会被清除,但是这里会清除一级缓存中的数据,所以把session.close() 一级缓存刷入二级缓存放在数据处理语句前 就可以实现二级缓存中有数据,且不被清除。
<!--这里就是我入坑时遇到的一些小问题,希望对大家有一定的帮助。欢迎大家留言,一起讨论,一起进步。有不对的地方,望大佬指教,也请大家多多包涵!-->
Mybatis学习日志的更多相关文章
- Mybatis学习--日志
学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/logging.html Logging Mybatis内置的日志工厂提供日志功能,具 ...
- mybatis学习日志之总结
一.介绍mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- Mybatis学习-日志与分页
日志 为什么需要日志 如果一个数据库操作出现了异常,需要排错,那么日志就是最好的助手 Mybatis通过使用内置的日志工厂提供日志功能,有一下几种实现方式: SLF4J Apache Commons ...
- mybatis学习——日志工厂
为什么要使用日志工厂? 我们想一下,我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?答案是肯定的,如果一个 数据库相关的操作出现了问题,我们就可以根据输出的S ...
- mybatis学习日志二
一.动态sql语句 if语句 if+where语句 if+set语句 choose(when,otherwise)语句 trim语句 sql片段 foreach语句 总结 bean部分的User类代码 ...
- mybatis学习日志一
Mybatis 介绍 MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以 及对结果集的检索封装 ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
随机推荐
- datatable 参数详细说明
页面参数说明 var docrTable = $('#docrevisontable').dataTable({ language:lang, //提示信息 autoWidth: false, //禁 ...
- 关于Flex的DataGridColumn 的editorDataField属性
本人Flex菜鸟,纯纯的小白 最近在项目中提了一个需求,其实这个需求就是在原有的列表中接一列数据,只不过这一列数据是下拉列表选择的 最关键的是貌似以前的某一位大神已经添加过,我的工作就是调通,可是就是 ...
- 百度在线编辑器 - PHP获取提交的数据
原文:http://www.upwqy.com/details/14.html 1 我们知道在在百度在线编辑器的demo中. 我们只要在body 里面 加载 script 标签 id="ed ...
- PLSQL Developer连接远程数据库的配置
去Oracle的安装目录找到:D:\oracle\NETWORK\ADMIN这个路径下面的tnsnames.ora文件 修改文件: 这个是本地的 ORCL = (DESCRIPTION = (ADDR ...
- ubuntu字符界面怎么设置中文显示和中文输入
在ubuntu的字符登陆界面,中文显示默认是乱码的,而且也不支持中文输入,解决方法有很多, 1)安装zhcon--解决中文显示乱码的问题. sudo apt-get install zhcon 然后c ...
- 使用python+Selenium对空调控制器进行循环发送控制命令
今天一同事说想对空调控制器进行循环发送命令操作.经过了对控制流程的梳理,发现每次选择内机后进入控制页面设定温度都是在26度,想了想,如果要进行循环就得将设定温度重置为17度,然后每循环一次温度增加1度 ...
- 设计模式——单例设计模式(C++实现)
#ifndef SINGLETONHOLDER_INC #define SINGLETONHOLDER_INC template<class T> class SingletonHolde ...
- 笔记:Maven 设置代理配置
如果公司基于安全因素考虑,要求使用通过安全认证的代理服务器访问因特网,这种情况夏,需要为 Maven 配置HTTP代理,才能让他正常访问外部仓库,配置代理服务器需要在~/.ms2/settings.x ...
- MYSQL数据库学习七 视图的操作
7.1 视图 视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务.提高了数据库中数据的安全性. 视图的特点如下: 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系. 视图是由基 ...
- python3.X中的循环
获取数字范围: range() 在python3.x中使用range(): >>> list(range(7)) [0, 1, 2, 3, 4, 5, 6] >>> ...