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包.这些软件工具均可以到各自的官方网站上下载 ...
随机推荐
- equals与==号的区别?
equals与 == 的区别 初学Java的人(me),有很长一段时间对equals()这个方法感到很懊恼,实在是弄不明白到底何时比较的是地址,又什么时候比较内容呢?因为要找工作,要面试.本人通过查阅 ...
- Django入门-通用视图
文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get ...
- webstorm修改工具栏主题
** 操作如图所示 **
- Android 视频展示控件之 SurfaceView、GLSurfaceView、SurfaceTexture、TextureView 对比总结
一.SurfaceView SurfaceView继承自View,并提供了一个独立的绘图层,你可以完全控制这个绘图层,比如说设定它的大小,所以SurfaceView可以嵌入到View结构树中,需要注意 ...
- unity(c# ioc框架) 使用总结
这里的unity指的是完成依赖注入的unity而不是游戏引擎. 原本项目完成依赖注入用的是spring.net,但是spring.net已经很久没人维护了,所以微软官方推出的Unity成为了替代spr ...
- Java中的代理模式--静态代理和动态代理本质理解
代理模式定义:为其他对象提供了一种代理以控制对这个对象的访问. 代理模式的三种角色: Subject抽象主题角色:抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求. Real ...
- Java虚拟机系列-Java类加载机制
原文:http://www.ityouknow.com/jvm/2017/08/19/class-loading-principle.html 一. 类加载: 1. 将.class文件的二进制数据加载 ...
- 怎么用代码制作WordPress的归档页面
先看看效果,这个是我网站的归档页面:http://www.shenjieblog.com/archives 其实WordPress自带了一个归档的功能,但是只能显示在网页中的某一个部分,但是我想单独制 ...
- java--计时器
计时器 一.窗口化 public class Pro extends JFrame{ private JTextField textField = new JTextField(45);//系统时间文 ...
- struts2基于注解配置action
如果使用struts2,就需要配置文件或者注解,关于struts2的配置文件struts.xml非常熟悉,对于注解可能spring使用的比较多.配置文件的繁琐衬托出了注解的简洁方便,一条或者几条注解解 ...