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片段
转载于:https://www.cnblogs.com/g2vbn/p/9345656.html
Mbatis是什么?怎么运行?相关推荐
- Git 教程 - Git 基本用法
Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project # 创建项目目录 cd project # 进入 ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- Docker安装Apache与运行简单的web服务——httpd helloworld
Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...
- 2022-2028年中国降解塑料聚酯行业运行动态及投资机会分析报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了降解塑料聚酯行业相关概述.中国降解塑料聚酯行业运行环境.分析了中国降 ...
- GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案
关于 GCC 提示找不到指定库文件的这个问题,通常出现在以下 2 个场景中: 利用静态库或者动态库文件实现链接操作(生成可执行文件)时,·GCC 可能会提示 xxx:No such file or d ...
- Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务
1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...
- Python 标准库之 os (获取当前目录、读取/设置环境变量、重命名文件、运行shell命令、创建/删除/查看目录文件、判断目录/文件/存在、获取绝对路径、获取文件名、获取换行符、获取路径分隔符)
1. os与sys模块的官方解释如下: os This module provides a portable way of using operating system dependent funct ...
- 如何使用vs来运行box2d中Testbed的案例
0 环境 vs: vs2012 box2d: Box2D_v2.1.2 1 得到box2d编译版本 可以参考: https://blog.csdn.net/sty945/article/details ...
- jdk12‘javac‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
前言: 安装JDK12遇到的问题以及学习过程, 我第一次用网上的安装办法,下载EXE后,配置好三个环境变量后运行,不行. 解决过程: 问题1:安装后javac命令运行时报错 jdk12'javac' ...
最新文章
- jsp截取字符串前几位_7. Python3轻食丨丛林里的野蛮生长:无处不在的字符串(一)
- 数据蒋堂 | 大数据计算语法的SQL化
- jenkins打完包在哪里
- Spring 详解(二):IOC 和DI
- go get github.com/tealeg/xlsx timeout 超时
- get online 免费注册一级.online后缀的域名
- Python学习入门7:python学习从基础到高手,再到就业
- 单片机之魂——定时器、中断
- Linux运维问题解决(4)——linux LVM技术 逻辑卷增加 扩容 缩小 删除等操作
- 中小型研发团队架构实践:应用监控怎么做?
- shell脚本学习指南-学习(2)
- linux下编译libyuv,Android ndk cmake编译libyuv
- 解决edge可以访问github,谷歌却无法访问的问题
- Mybatis XML文件属性配置
- vue 点击当前路由怎么重新加载_Vue 路由切换时页面内容没有重新加载的解决方法...
- 基于 WeDataSphere Prophecis 与 KubeSphere 构建云原生机器学习平台
- 0-1背包问题和背包问题
- Sybase PowerDesigner 的palette(工具箱)怎么打开
- Html5:生成个玫瑰线图案
- UES:地域有界,资产无国界