mybatis小总结
mybatis是一个持久层的框架,是一个不完全的orm框架。sql语句需要程序员自己去编写,但是mybatis也有映射(输入参数映射,输出结果映射)
mybatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上,对sql语句优化比较方便,适用于需求变化比较多的项目,比如互联网项目。
mybatis执行过程
1、配置mybatis的配置文件 SqlMapConfig.xml(名称不固定)
2、通过配置文件加载mybatis的运行环境,创建SqlSessionFactory会话工厂
SqlSessionFactory在实际使用师按单例方式
3、通过工厂创建SqlSession会话
SqlSession是面向用户接口(提供操作数据库的方法),实现对象是线程不安全的,建议SqlSession使用场合在方法体内。
4、调用SqlSession的方法来操作数据库
如果需要提交事务 需要执行SqlSession的commit()方法
5、关闭SqlSession( 释放资源)
mybatis开发dao的方法:
1、原始dao方法
需要程序员编写dao接口和实现类
需要在dao实现类中注入SqlSessionFactory工厂
2、Mapper代理的开发方法 mybatis特有的方法(建议使用)
只需要程序员编写Mapper接口(dao接口)
程序员在编写mapper.xml(映射文件)和mapper.java 需要遵循一个开发规范:
1、在mapper.xml中的namespace就是mapper.java的全路径
2、mapper.xml中的statement的id和mapper.java中的方法名一致
3、mapper.xml中的parameterType中的类型和mapper.java中的方法中的参数一致
4、mapper.xml中的resultType中的类型和mapper.java中的方法返回值一致
SqlMapConfig.xml文件可以配置properties、别名、mapper加载...
输入映射:
parameterType:指定输入参数类型,可以是简单、pojo、hashmap。。
对于综合查询 建议parameterType的类型使用包装pojo,有哦利于系统扩展
输出映射:
resultType:查询到的列名和pojo的属性名一致才可以映射成功
resultMap:可以通过resultMap完成高级和复杂的映射 如果查询到的列名和最终的pojo的属性名不一致时,就可以通过resultMap设置列名和属性名的对应关系(映射关系) 完成映射
高级映射:
将关联查询的列映射到一个pojo中(一对一)
将关联查询的列映射到一个List<pojo>中(一对多)
动态sql:
if判断
where
foreach
sql片段
mybatis小总结的更多相关文章
- MyBatis小案例完善增强
https://blog.csdn.net/techbirds_bao/article/details/9233599 上链接为一个不错的Mybatis进阶博客 当你把握时间,时间与你为伍. 将上一个 ...
- mybatis小工具
1.其实也不算是针对mybatis的其他都可以用 lombok 2.mybatis的小插件,可以快速定位到mapper.xml和接口之间 mybatisx
- MyBatis小抄
持续更新中. Every MyBatis application centers around an instance of SqlSessionFactory A cleaner approch t ...
- MyBatis小问题(1)-Mapper中错误No constructor found...
前两天又被公司叫去修改其他产品的一些问题了,没有看java相关的,今天周六,看了看MyBatis东西. 就是简单的在MySql中建了个users表,很简单,包含id,name,age,写了个bean. ...
- mybatis小技巧
本节主要讲解mybatis如下五个方面的内容: foreach 批量插入 模糊查询like的写法 #{}和${}的区别 解决实体类中的属性名和表中的字段名不一致问题 由于每次建立工程比较复杂,可以参考 ...
- MyBatis小问题-Mapper中错误No constructor found...
前两天又被公司叫去修改其他产品的一些问题了,没有看java相关的,今天周六,看了看MyBatis东西. 就是简单的在MySql中建了个users表,很简单,包含id,name,age,写了个bean. ...
- Springboot+Mybatis+小程序
思维导图: 项目效果图 一览界面: 新增界面:
- mybatis hibernate比较
开发速度: 如果一个项目中用到的复杂的查询基本没有,就是简单的增删该查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不用去写sql语句,但是对于一个大型项目,复杂语 ...
- Mybatis连接池及事务
一:Mybatis连接池 我们在学习WEB技术的时候肯定接触过许多连接池,比如C3P0.dbcp.druid,但是我们今天说的mybatis中也有连接池技术,可是它采用的是自己内部实现了一个连接池技术 ...
随机推荐
- window.onload和document.ready的区别
window.onload和document.ready虽然两个方法的运行效果都一样,但他们之间是存在着区别的: 一.从执行的时间 window.onload在dom文档结构加载完毕以后就可以执行,不 ...
- 关于print的一点秀操作
我们在玩 Python 的时候 常常会使用到 print 这个函数 主要用它来打印一些输出 这样我们可以更加方便的知道 程序的运行情况 我们常常这样操作 不过不是很骚 有时候我们想更加直观的看到我 ...
- sqli(9)
less9--基于时间的GET单引号盲注 前言 重写博客是为了赶作业,现在已经下定决心考研了.以后这个博客只会记录我的数学.英语.数据结构学习记录了.我还是 想使劲冲一把,但是最近羁绊太多.很多作业( ...
- python基础--匿名函数
def calc(x): return x+1 a=calc(10) print(calc) print(lambda x:x+1)#lambda函数的内存地址,利用函数名可以作为值传递给变量 b=l ...
- python基础——对时间进行加减
在datetime模块中有一个timedelta这个方法,它代表两个datetime之间的时间差.. In [42]: datetime.datetime.now().strftime('%Y-%m- ...
- thinkphp数据库连接
https://www.kancloud.cn/manual/thinkphp5/118059 一.配置文件定义 常用的配置方式是在应用目录或者模块目录下面的database.php中添加下面的配置参 ...
- POJ 2960 S-Nim (sg函数)
题目链接:http://poj.org/problem?id=2960 题目大意:给定数组S,接下来给出m个游戏局面.游戏局面是一些beads堆,先给出堆数,然后是每一堆中beads的数目.游戏规则是 ...
- Python---基础-小游戏用户猜数字2
一.使用int()将小数转换成整数,结果是向上取数还是向下取数 int(3,4) print(int(3,4)) ####写一个程序,判断给定年份是否为闰年 - 闰年的定义,能够被4整除的年份就叫闰年 ...
- selenium 自动化的坑(2)
UI自动化,一天一坑系列(2) 今天要介绍的坑是这样的:在使用google浏览器的过程中,F12查看页面元素,我的操作步骤是先F12,然后点击箭头,接着点击要查找的元素来实现元素查看,不知道你是不是这 ...
- 对webpack的初步研究2
Entry Points 如“ 入门”中所述,有多种方法可以entry在webpack配置中定义属性.我们会告诉你,你的方法可以配置的entry属性,除了解释为什么它可能对你有用 Single Ent ...