Mbatis是什么?怎么运行?
一 . Mybatis是什么?
Mybatis是一个持久层框架,其中编写的过程中sql语句是需要程序员自己去编写,Mybatis也有
一些映射(输入参数映射,输出参数映射),Mybatis是一个不完全的ORM框架。在项目应用中成本较低
不同于hib(成本较高) 在编写Mybatis中程序员只需要把精力放在sql语句上即可,Mybatis对sql
语句的优化非常方便,而hibernate 对sql语句的变更较Mybatis差,所以Mybatis适用于需求变化较多
的项目,比如互联网项目。(简化底层的sql)
二 . Mybatis框架的执行过程
1.配置mybatis配置文件,SqlmapConfig.xml(https://www.cnblogs.com/g2vbn/p/9345659.html)
2.通过配置文件加载Mybatis运行环境,创建SqlSessionFactory会话工厂,通过SqlSessionFactory创建
SqlSession(面向接口{原始的dao,Mybatis的mappper接口})SqlSession提供操作数据库的方法
3. 调用SqlSession的方法去操作数据库(增删改查......)
4.释放资源
三 . Mybatis开发dao层的方法:
Mybatis开发dao有两种方法
1.原始dao(需要程序员掌握,现在有的公司还在用)
需要编写dao接口的实现类 ,在dao实现类中注入SqlSessionFactory工厂
2.mapper代理开发()
需要编写mapper接口(就是dao接口)
程序员在编写mapper.xml和mapper.java时需要遵循开发规范:
(1)在mapper.xml中namespace就是mapper的类的全路经
(2) mapper.xml中statement的id鹅mapper.java中方法名一致
(3) mapper.xml中statement的parameterType指定输入参数的类型和mapper.java的方法输入参数类型一致
(4)mapper.xml中statement的resultType指定输出类型和mapper.java的方法返回值类型一致
四。输入输出映射
1.输入映射
parameterType:指定输入参数类型的可以简单类型,pojo ,hashmap....
对于综合查询,建议parameterType使用包装过的pojo,有利于系统维护,扩展
2.输出映射
resultType:
查询到的列名和resultType的属性名一致才能映射成功
resultMap:
可以通过resultMap完成一些高级映射
如果查询到的列名和映射的pojo属性名不一致时,通过resultMap设置列名和属性名之间的对应关系,可以完成映射
高级映射:将关联查询的列映射到一个pojo属性中(一对一)
将关联查询的列映射到一个List《pojo》中(一对多)
五. 动态Sql
if判断
where(去掉第一个and)
foreatch
sql片段
Mbatis是什么?怎么运行?的更多相关文章
- ASP.NET Aries 入门开发教程1:框架下载与运行
背景: 鉴于框架的使用者越来越多,文档太少,不少用户反映框架的入门门槛太高. 好吧,再辛苦下,抽时间写教程吧! 步骤1:下载框架源码 开源地址:https://github.com/cyq1162/A ...
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- Sublime Text3配置在可交互环境下运行python快捷键
安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...
- hadoop 2.7.3本地环境运行官方wordcount-基于HDFS
接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...
- hadoop 2.7.3本地环境运行官方wordcount
hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Linux scp 设置nohup后台运行
Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
- Android数据存储之Android 6.0运行时权限下文件存储的思考
前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...
随机推荐
- 74859a颜色信息
74859a十进制的RGB值为R:116, G:133, B:154. CMYK值为C:24.675, M:13.636, Y: 0.0, K: 39.608 RGB 116, 133, 154 百分 ...
- Excel催化剂开源第5波-任务窗格在OFFICE2013中新建文档不能同步显示问题解决
在OFFICE2013及之后,使用了单文档界面技术,不同于以往版本可以共享任务空格.功能区.所以当开发任务窗格时,需要考虑到每一个工作薄都关联一个任务窗格. 背景介绍 单文档界面摘录官方定义如下:对 ...
- java-org.springframework.core.convert.ConversionFailedException- 前端传string解析date异常
关于SpringMVC前台日期作为实体类对象参数类型转换错误解决 异常信息: Field error in object 'tblHouse' on field 'houseTime': reject ...
- Pytest进阶之参数化
前言 unittest单元测试框架使用DDT进行数据驱动测试,那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢?其实Pytest是使用@pytest.mark.parame ...
- STL 大法好
#include <vector> 1.支持随机访问,但不支持在任意位置O(1)插入: 2.定义: ```cpp vector<int> a; ``` ...
- vue 移动端/PC常见问题及解决方法
一.判断手机/PC浏览器语言 navigator.language // 返回语言代码 语言代码文档: http://www.lingoes.cn/zh/translator/langcode.htm ...
- Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文
前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...
- 深入理解JVM-类加载器深入解析(1)
类加载 在java代码中,类型的加载,连接与初始化过程都是在程序运行期间完成的 类型:表示的Object本身,并不是指一个对象,也就是class. 运行期间:表示的是一种runtime的概念,在运行期 ...
- 自定义itemClickView
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- Android 9.0 关机流程分析
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...