mybatis今年笔记
1.读取配置文件:用的就是解析Xml文件的技术 2.mybatis是支持自己写dao层的,但是没有必要。
mybatis做的事情: 第一个创建代理对象,第二个在代理对象中调用方法。 3.相同的注解如果和配置文件一同出现的话会报错,即使在Sql***.xml的配置文件中注释掉一个也会出错。 我也不清楚,但是我把Sql***.xml配置文件的配置文件方法注释掉他报错了,不知道注释到注解留下 配置文件方法会不会报错 在之后的学习,老师讲解了一下解析xml的源码,它的运行是先判定有没有resource来确定某个mapper.xml 如果没有才用注解方式判定,我也不知道为什么会报错是因为重复吗,但是我把它注释了啊。 4.mybatis运行过程:基于配置文件执行,利用java反射机制返回想要的结果集 查询的findAll机理: 1.根据配置文件的信息创建Connection对象 注册驱动获取连接 2.获取与处理的对象PreparedSatement 需要SQL语句 3.执行查询 ResultSet 4.结果返回 配置文件中的Mapper对象包含:Sql语句 domainClassPath(封装类的全限定名) 5. class: Resources SqlSessionFactoryBuilder
接口: SqlSessionFactory SqlSession
这四个的作用看源码注释 6.xml方式与注解方式的区别优劣: ‘
简单用注解 复杂用xml
xml可以利用自定义注解,通过反射,拼出SQL语句,而注解方式怎么动态呢? 7. 进行add和update必须进行session.commit();
session.commit(); 8.如果Bean层不对应数据库的话
第一个解决方案1.起别名 username as userName 运行快
第二个解决方案 <resultMap>的配置 只用写一遍对于开发要优势
二者各有利弊,追求执行效率第一种和数据库和实体类一一对应 追求开发爽就是第二种写一遍可扩展性好
总结:mybatis通过解析xml文件获取各种属性包括driver,url,账号密码,mappers的信息和mapper信息,利用java反射机制生成工厂来生成代理对象来工作
//读取配置文件
//绝对路径与相对路径
//读配置文件方法:
//第一个:使用类加载器,他只能读类路径的配置文件
//第二个:使用ServletContext对象的getRealPath()方法
// 创建工厂mybatis使用了构建者模式
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory工厂
System.out.println(inputStream);
//builder构建者
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder(); SqlSessionFactory factory =builder.build(inputStream); //生产SqlSession使用了工厂模式
//使用工厂生产SqlSession对象
SqlSession session =factory.openSession(); //使用SqlSession创建Dao接口代理对象
//使用代理模式 IUserDao userDao =session.getMapper(IUserDao.class); //使用代理对象
List<User> users =userDao.findAll(); System.out.println(users);
for(User user: users)
{
System.out.println(user.toString());
}
//释放资源
session.close();
inputStream.close();
mybatis今年笔记的更多相关文章
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- MyBatis 框架笔记
Mybatis 框架笔记 ------技术源于热爱! 获取更多内容请关注小编的个人微信公众平台 1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jd ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- MyBatis:学习笔记(3)——关联查询
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
- mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现
项目结构 基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...
- Mybatis学习笔记二
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
随机推荐
- CMake查找第三方库路径
问题 一直都有一个问题,就是基于Windows下使用CMake构建VS工程时,CMake是如何查找到第三方库所在的路径的呢? 答案 今天重新想起这个问题,就拿构建Vtk的VS工程测试了一下, 才发现是 ...
- 28 最小的K个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路: 解法1:对于小规模数据,可以采用类似前题的快速排序思路 ...
- 17 MySQL的小技巧
1.正则表达式的使用 ^ 在字符串开始处进行匹配 $ 在字符串末尾处进行匹配 . 匹配任意单个字符,包括换行符 [...] 匹配出括号内的任意字符 [^...] 匹配不出括号内的任意字符 a* ...
- 设置zabbix (3.4.2)添加监控项,触发器,让CPU使用超过85%就报警:
zabbix (3.4.2)添加监控项,触发器,让CPU使用超过85%就报警: zabbix自带模板有一个 Template OS Linux模板.这个模板有监控CPU的监控项,如果没有添加一个监控项 ...
- Google宣布安全奖励项目(GPSRP)覆盖上亿的 Android 应用程序
自 2010 年推出除虫赏金项目以来,谷歌已经向安全研究人员支付了超过 1500 万美元的奖励.今天,这家科技巨头宣布进一步拓展 Google Play 安全奖励项目(GPSRP)的范围,以覆盖上亿的 ...
- NCSC敦促开发者淘汰Python 2
导读 Python 2.x即将结束生命,英国国家网络安全中心(NCSC)敦促开发人员尽快从Python 2.x迁移到Python 3.x.越快越好.Python 2.x将于2020年1月1日停止使用, ...
- ROS常用库(五)navigation之Tutorials
一.TF 详见古月居 https://www.guyuehome.com/355 重点:广播TF,订阅,编译时Cmakelist添加编译选项 broadcaster.sendTransform( tf ...
- 洛谷 P1247 取火柴游戏
题目传送门 暴力 \((\)由于我这样的初中蒟蒻不\((bu)\)喜\((hui)\)欢\((xie)\)数学证明,所以题解中的证明全是其他大佬的题解已经多次证明过的,这里就不再啰嗦了.\()\) - ...
- c语言查漏补缺
getchar:执行getchar()函数时,首先从输入缓存区读取字符,直到输入缓存区为空时才等待从键盘继续输入.scanf()之间不要有printf操作. 逗号表达式 a= (++a,1,2),只取 ...
- Day8 - G - Bound Found ZOJ - 1964
Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...