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是需要动态申请权限,所以以 ...
随机推荐
- 给hexo博客的NEXT主题添加一个云日历
一点废话 hexo中有文件的归档,但是博文的数目多了,浏览的时候也是很不方便的.于是我就有找个云日历的想法了,折腾了几天,网上的方法都试过了.但是没出效果.于是想着自己来写一个.这自己写的这部分是基于 ...
- 我是这样一步步理解--主题模型(Topic Model)、LDA
1. LDA模型是什么 LDA可以分为以下5个步骤: 一个函数:gamma函数. 四个分布:二项分布.多项分布.beta分布.Dirichlet分布. 一个概念和一个理念:共轭先验和贝叶斯框架. 两个 ...
- spring的jdbcTemplate的使用
转载:http://1358440610-qq-com.iteye.com/blog/1826816 一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作. ...
- python传递参数
1.脚本 # -*- coding: utf-8 -*- from sys import argvscript, first,second = argv #将命令中输入的参数解包后传递给左边 age ...
- 真千兆路由的极限之OPENWRT MAKE, 某品牌白菜价QCA9558/QCA9880/QCA8337N纯种组合OS搭建时记
自从上次仙人梦里放了一张无字天书,解惑了WPR003N的秘诀后,渐渐的,就忘了这件这事情,连想好的评测都拖延了好多月了,毕竟路由是拿来用的,不是用来写什么陈词滥调的评测的,无意间,热爱白菜的我发现了一 ...
- Code blocks返回错误代码:Process returned -1073741819 (0xC0000005)
循环语句访问链表时,返回了错误代码: 逐项排查后,发现是由while循环引起的: 附上出错代码: do{ L=L->post; printf("%05d %d %05d\n" ...
- 【pycharm】Pycharm对 axios语法的支持问题
问题: 解决办法: 1,找到pychar的settings 2,ECMAScript6
- html+css+dom补充
补充1:页面布局 一般像京东主页左侧右侧都留有空白,用margin:0 auto居中,一般.w. <!DOCTYPE html> <html lang="en"& ...
- 如何在docker下安装elasticsearch(上)
一 环境 VMware® Workstation 15 Pro centos7 (1810) docker19.03.1 二 进入centos7启动dcoker systemctl start doc ...
- 四、Python基础(1)
目录 四.Python基础(1) 四.Python基础(1) 1.什么是变量? 一种变化的量,量是记录世界上的状态,变指得是这些状态是会变化的. 2.为什么有变量? 因为计算机程序的运行就是一系列状态 ...