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中也有连接池技术,可是它采用的是自己内部实现了一个连接池技术 ...
随机推荐
- EPROCESS ETHREAD PEB重要成员
-----------------------------------------------------------------------win7 x86中-------------------- ...
- 剑指offer学习读书笔记--二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都是按照从上到下递增的顺序排序.请设计一个函数,输入这样的一个二维数组和一个整数,判断数组是否含有这个整数. 1 2 8 9 2 4 9 1 ...
- Python之路-Python中文件和异常
一.文件的操作 open函数 在python中,使用open函数,打开一个已经存在的文件,或者新建一个新文件. 函数语法 open(name[, mode[, buffering[,encoding] ...
- Nginx处理前端跨域(补充)
在之前的博客中提到了用nginx来处理前后端跨域问题,用Nginx代理请求,处理前后端跨域 ,虽然解决当时了问题,但是在实际使用中还是不好用,当时应对的只是对单接口的处理,如果一个页面需要调用两个不同 ...
- pg_controldata - 显示一个 PostgreSQL 集群的控制信息
SYNOPSIS pg_controldata [ datadir] DESCRIPTION 描述 pg_controldata 打印那些在 initdb 过程中初始化的信息,比如表版本和服务器的区域 ...
- tomcat日志切割脚本shell
tomcat-rotate.sh: #!/bin/bash log_path="/home/tomcat7-api/logs/"expried_time=7 function de ...
- 一、ffmpeg理论
一.ffmpeg三件套 ffprobe看文件属性 ffmpeg 编转码 ffplay 播放器 C:\Users\Bruce\Desktop\Temp\ffmpeg\ffmpeg\ToolPack\ff ...
- eclipse 代码提示快捷键 alt+/
eclipse (ALT+/)1.选择Eclipse菜单栏中的Window->preferences: 2.选择General->keys; 3.在右侧中间的窗体中点击word compl ...
- mysql服务设置远程连接
一.前期准备 1.虚拟机/物理机 mysql环境(非本机)2.本机 navicat软件(验证远程连接) 二 .mysql配置 1.在远程主机的本机 使用root用户连接mysql mysql ...
- dubbo、web应用 项目结构以及发布目录结构
一.dubbo服务项目结构及发布结构 dubbo 服务项目结构 xxxxx-api 接口类和一些DTO 用于供其他项目依赖 需要提供dubbo服务的接口命名 以Facade结尾 (xxxxxFacad ...