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小总结的更多相关文章

  1. MyBatis小案例完善增强

    https://blog.csdn.net/techbirds_bao/article/details/9233599 上链接为一个不错的Mybatis进阶博客 当你把握时间,时间与你为伍. 将上一个 ...

  2. mybatis小工具

    1.其实也不算是针对mybatis的其他都可以用 lombok 2.mybatis的小插件,可以快速定位到mapper.xml和接口之间 mybatisx

  3. MyBatis小抄

    持续更新中. Every MyBatis application centers around an instance of SqlSessionFactory A cleaner approch t ...

  4. MyBatis小问题(1)-Mapper中错误No constructor found...

    前两天又被公司叫去修改其他产品的一些问题了,没有看java相关的,今天周六,看了看MyBatis东西. 就是简单的在MySql中建了个users表,很简单,包含id,name,age,写了个bean. ...

  5. mybatis小技巧

    本节主要讲解mybatis如下五个方面的内容: foreach 批量插入 模糊查询like的写法 #{}和${}的区别 解决实体类中的属性名和表中的字段名不一致问题 由于每次建立工程比较复杂,可以参考 ...

  6. MyBatis小问题-Mapper中错误No constructor found...

    前两天又被公司叫去修改其他产品的一些问题了,没有看java相关的,今天周六,看了看MyBatis东西. 就是简单的在MySql中建了个users表,很简单,包含id,name,age,写了个bean. ...

  7. Springboot+Mybatis+小程序

    思维导图: 项目效果图 一览界面: 新增界面:

  8. mybatis hibernate比较

    开发速度: 如果一个项目中用到的复杂的查询基本没有,就是简单的增删该查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不用去写sql语句,但是对于一个大型项目,复杂语 ...

  9. Mybatis连接池及事务

    一:Mybatis连接池 我们在学习WEB技术的时候肯定接触过许多连接池,比如C3P0.dbcp.druid,但是我们今天说的mybatis中也有连接池技术,可是它采用的是自己内部实现了一个连接池技术 ...

随机推荐

  1. Smarty模板引擎模板文件.tpl和.html的区别

    在WEB开发中,PHP作为业务逻辑,HTML作为表现逻辑.但是在Smarty一些文档中可以看到模板文件的拓展名是.tpl,而不是.html,其实所谓的.tpl就是.html. 模版文件可以用任意的扩展 ...

  2. 手写split功能

    def split_new(stringstr, charstr):    """    :param stringstr: 要分割的串    :param charst ...

  3. eclipse的代码格式化的个性配置

    1.安装jdk a. 到http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载对应版本的jdk,安装到自己电脑上. ...

  4. python-使用list和tuple

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  5. django之创建子应用

    一:子应用 Django的视图编写是放在子应用中的.类似于flask中的视图. 二:创建子应用 例如:在刚才的dj_study项目中,创建一个名字为user的子应用(目录):注意是第一级的dj_stu ...

  6. leetcode-167周赛-1292-元素和小于等于阈值的正方形的最大边长

    题目描述; 自己的提交:超时 class Solution: def maxSideLength(self, mat: List[List[int]], threshold: int) -> i ...

  7. Dubbo学习-7-dubbo配置文件优先级

    Dubbo配置加载流程 根据驱动方式的不同(比如Spring或裸API编程)配置形式上肯定会有所差异,具体参考XML配置.Annotation配置.API配置三篇文档.除了外围驱动方式上的差异,Dub ...

  8. linux-Centos 7下bond与vlan技术的结合[推荐]

    https://blog.51cto.com/sf1314/2073519 服务器eth0与eth1作bonding,捆绑成bond0接口,服务器对端交换机端口,同属于100.101号vlan接口 v ...

  9. 【HDOJ6681】Rikka with Cake(扫描线,线段树)

    题意:给定一个n*m的平面,有k条垂直或平行的直线,问将平面分成了几个互不联通的部分 n,m<=1e9,k<=1e5 思路: 刻在DNA里的二维数点 #include<bits/st ...

  10. 前端通过axios和FormData实现文件上传功能遇到的坑

    使用element-ui中的upload上传组件,前端上传数据参数已经传过去了,但是后端 (java) 接不到数据 (null) [解决方案] html部分: <el-button type=& ...