一   .    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是什么?怎么运行?的更多相关文章

  1. ASP.NET Aries 入门开发教程1:框架下载与运行

    背景: 鉴于框架的使用者越来越多,文档太少,不少用户反映框架的入门门槛太高. 好吧,再辛苦下,抽时间写教程吧! 步骤1:下载框架源码 开源地址:https://github.com/cyq1162/A ...

  2. 在传统.NET Framework 上运行ASP.NET Core项目

    新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...

  3. Sublime Text3配置在可交互环境下运行python快捷键

    安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...

  4. hadoop 2.7.3本地环境运行官方wordcount-基于HDFS

    接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...

  5. hadoop 2.7.3本地环境运行官方wordcount

    hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...

  6. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  7. Linux scp 设置nohup后台运行

    Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...

  8. 在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 ...

  9. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

随机推荐

  1. 洛谷P3877 [TJOI2010]打扫房间 解题报告

    首先整理一下条件: 1.恰好进出每个需打扫的房间各一次 2.进出每个房间不能通过同一个门 (其实前两个条件是一回事) 3.要求每条路线都是一个闭合的环线 4.每条路线经过的房间数大于2 让你在一个n* ...

  2. [leetcode] #213 House Robber II Medium (medium)

    原题链接 比子母题House Robber多了一个条件:偷了0以后,第n-1间房子不能偷. 转换思路为求偷盗[0,n-1)之间,以及[1,n)之间的最大值. 用两个DP,分别保存偷不偷第0间房的情况. ...

  3. Python学习6——再谈抽象(面对对象编程)

    1.对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法. 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象 ...

  4. laravel5.6 使用迁移创建表

    laravel 使用迁移创建表 创建迁移文件 --table 和 --create 选项可以用于指定表名以及该迁移是否要创建一个新的数据表.这些选项只需要简单放在上述迁移命令后面并指定表名: php ...

  5. python的乘法口诀表

    python的乘法口诀表 python的乘法口诀表 用python来写一个脚本,使得这个脚本在运行后自动输出乘法口诀表. pyton的脚本如下: #!/usr/bin/env python #codi ...

  6. 使用ASM实现动态代理

    如果对我这段代码感兴趣,直接拷贝测试debug,要不然你不知道我写的是什么鬼,如果有什么问题,可以告诉我. 一.实现动态代理,首先得考虑有应该定义哪些类,根据JDK的动态代理思想,那么它就应该有一个生 ...

  7. Django使用本机IP无法访问,使用127.0.0.1能正常访问

    使用Django搭建web站点后,使用127.0.0.1能访问,但是用自己本机IP却无法访问. 我们先到Django项目中找到setting文件 找到——> ALLOWED_HOSTS = [] ...

  8. SpringBoot RabbitMQ 整合使用

    ![](http://ww2.sinaimg.cn/large/006tNc79ly1g5jjb62t88j30u00gwdi2.jpg) ### 前提 上次写了篇文章,[<SpringBoot ...

  9. vue动态表单

    项目需求,需要根据后台接口返回数据,动态添加表单内容 说明:此组件基于Ant Design of Vue 目前支持六种表单控件:文本输入框(TextInput).文本域输入框(TextArea).下拉 ...

  10. python多线程详解

    目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 二.线程实现 threading模块 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 互斥锁 递归锁 信号量 ...