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包.这些软件工具均可以到各自的官方网站上下载 ...
随机推荐
- oracle 裸设备划分 --centos6.5
主题思想:物理卷PV->卷组VG->逻辑卷LV(类型:raw)->添加表空间 操作过程 vg_orcl 8g 一:划分 二:创建裸设备 方法1:目前最常用的方法 #c ...
- java 多态 ---父类调用子类方法
package test1;//多态的体现import javax.print.attribute.standard.RequestingUserName;import java.util.Scann ...
- Java并发编程实战(chapter_1)(原子性、可见性)
混混噩噩看了很多多线程的书籍,一直认为自己还不够资格去阅读这本书.有种要高登大堂的感觉,被各种网络上.朋友.同事一顿外加一顿的宣传与传颂,多多少少再自我内心中产生了一种敬畏感.2月28好开始看了之后, ...
- UML常用关系
转载自:http://justsee.iteye.com/blog/808799和http://www.uml.org.cn/oobject/201104212.asp 关系(4种):泛化关系,实现关 ...
- 理解Spring中的IOC和AOP
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式 IOC就是典型的工厂模式,通过ses ...
- 利用sfc文件构建网络渗透
收集哈希 SCF(Shell命令文件)文件可用于执行一组有限的操作,例如显示Windows桌面或打开Windows资源管理器,这并不是什么新鲜事.然而,一个SCF文件可以用来访问一个特定的UNC路 ...
- 1-3 hibernate核心对象关系映射 xxx.hbm.xml
详见 http://www.cnblogs.com/biehongli/p/6532800.html 1 <?xml version="1.0" encoding='utf ...
- trigger回调方法的实现
用传参实现trigger的回调: 点击btn1触发btn2的click事件并执行trigger中传入的回调方法 <body> <input type="button&quo ...
- 【BootStrap】 概述 & CSS
BootStrap BootStrap由Twitter开发,基于HTML,CSS,JS,是一套前端框架.它的特点是对浏览器良好的支持(目前市面上所有流行浏览器都可以),兼容移动设备,以及响应式设计(响 ...
- SSH三大框架整合案例
SSH三大框架的整合 SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 ...