Mybatis的学习与理解
Mybatis
1.介绍
Mybatis是支持SQL查询,存储和映射的持久层框架。使用时消除了JDBC代码和参数的设置以及对结果集的封装
Mybatis可以使用注解来进行配置和进行映射,将Mapper和Pojo映射为数据库中的记录
2.Mybatis优势
- 消除了JDBC的打码冗余
- 简单易学,可以与数据库协同工作
- 简单的接收SQL语句
- 可以提供第三方缓存的集成支持
- 性能更好
3.Mybatis基本使用步骤
1.加入Maven依赖
点击查看代码
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
2. 创建Dao(Mapper)接口,定义操作数据库内容
- 创建Mapper文件
- 也叫做映射文件,分别为XXXMapper.java和XXXMapper.xml
- XXXMapper.java文件中存放的是方法名称
>
3.XXXMapper.xml 里面存放的是Sql语句
4.创建Mybatis-config.xml配置文件,在resources中
1. 连接数据库
2. 指定mapper文件的内容
Mybatis动态代理
- 理解动态代理
- Mybatis帮忙创建dao(mapper)接口的实现类,在实现类中调用SqlSession的方法执行sql语句。
- 使用动态代理的要求
- dao接口和mapper文件放在一起
- dao和mapper文件名称一致
- mapper文件中的namespace的值是dao接口的全限定名称
- mapper文件中的select、delete、update等的id是接口中的方法名称
- dao接口中不适用重载方法
理解参数
- 一个简单类型的参数#
- 多个简单类型的参数,使用@Param("自定义名称")
- 使用一个java对象,对象的属性值作为mapper文件找到的参数,#
- 使用参数位置:语法:#{arg0},#{arg1} ,mybatis3.4之前使用的是 #{0},#
- 使用map作为参数,#
#和$的区别
- (#)是占位符,表示列值,放在等号的右侧
- ($)是占位符,表示字符串连接,sql连接成一个字符串
- (#)占位符使用的jdbc指定PerparedStatement对象执行sql语句效率高,没有sql语句注入的风险
- $使用的是Statement对象执行sql,效率低,有sql注入的风险
Mybatis返回结果
- resultType:表示sql语句的执行结果转化为java对象的类型
- 类型的全限定名称
- 定义别名:1.mybatis主配置文件中定义;2.;3.使用注解@Alias
- resultMap:自定义类名和java对象属性名的关系
- like:1.在java代码中指定like的内容;2.在mapper中拼接like
Mybatis的学习与理解的更多相关文章
- Mybatis架构学习
Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6869133.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(六)——MyBatis关联查询
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6923464.html 前面有将到:Spring+SpringMVC+MyBatis深入学习及搭建(五)--动 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(七)——MyBatis延迟加载
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6953005.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(六)——My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6964162.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(八)--My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——S ...
- mybatis自己学习的一些总结
曾经一直在使用spring的JDBCTEMPLATE和hibernate做项目.两个都还不错,spring的jdbctemplate用起来比較麻烦,尽管非常easy.而hibernate呢,用起来非常 ...
- Mybatis代码学习
Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...
- 【log4j】的学习和理解 + 打印所有 SQL
log4j 1.2 学习和理解 + 打印所有 SQL 一.基本资料 官方文档:http://logging.apache.org/log4j/1.2/manual.html(理解基本概念和其他) lo ...
随机推荐
- Codeforces Round #828 (Div. 3) A-F
比赛链接 A 题解 知识点:贪心,模拟. 遇到没用过的数字就给个字母,遇到用过的数字就对照字母是否一致. 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码 #include <b ...
- 对于python中“FileNotFoundError: [Errno 2] No such file or directory”的解决办法
在我们使用vscode运行Python代码时遇到的情况 一.出现原因:这里是由于Vscode中,python里的路径是相对与工作目录来进行定位的.所以在多级目录情况下,若不设置绝对路径,往往找不到相应 ...
- 论文笔记 - SIMILAR: Submodular Information Measures Based Active Learning In Realistic Scenarios
motivation Active Learning 存在的重要问题:现实数据极度不平衡,有许多类别很少见(rare),又有很多类别是冗余的(redundancy),又有些数据是 OOD 的(out- ...
- PYQT5 学习
zetcode教程 汉化版: https://maicss.gitbook.io/pyqt5-chinese-tutoral/ 官方网站: https://www.riverbankcomputing ...
- Anaconda环境搭配(Ipython)-获得jupyter notebook(适用Win10)
关于如何下载anaconda并获得jupyter notebook的随笔. 首先下载anaconda,然后下载完成后,如果是win10系统,则通过下图的放大镜搜索Jupyter Notebook 会有 ...
- 【云原生 · Kubernetes】Kubernetes运维
(1)Node的隔离与恢复 在硬件升级.硬件维护等情况下,需要将某些Node隔离.使用kubectl cordon <node_name>命令可禁止Pod调度到该节点上,在其上运行的Pod ...
- 微信公众号没有scope授权
微信公众号有自己的appid 开发平台的绑定也有自己的appid 看文档的时候,注意是使用公众号的appi还是开放平台的appid
- SpringDataJpa源码理解
SpringDataJpa源码理解 上一篇讲解了SpringDataJpa的基本使用,下面简单说一下源码 我们以其中的一个test为案例进行分析: 我们可以发现resumeDao它是一个代理对象,类型 ...
- 基于EasyCode定制Mybatisplus全自动单表实现:新增/批量新增/修改/批量删除/分页查询/ID查询
基于EasyCode定制Mybatisplus全自动单表实现CRUD接口 分页查询 ID查询 新增 批量新增 修改 批量删除 注意使用了MybatisPlus的自动填充功能,和insertBatchS ...
- 云数据库FinOps实战复盘
历时三个多月的HBase成本优化项目按照预期交付了,HBase云数据库月度成本下降了32.5%,超出预期达成目标. 我们对本次HBase成本优化项目进行深度复盘,并进一步尝试总结云数据库的FinOps ...
>
