
MyBatis入门介绍(一)
1、mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。 mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。 2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂。 3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。 4、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。 5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。 6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。 7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。 mybatis默认使用log4j作为输出日志信息
发布日期:2021-05-07 11:03:23
浏览次数:15
分类:技术文章
本文共 2894 字,大约阅读时间需要 9 分钟。
自学方法论: 理论 -> 实践 -> 理论 -> 实践-> 理论 -> 实践 反复迭代三遍
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis架构

xml文件详解:
namespace :命名空间,用于隔离sql语句,后面会讲另一层非常重要的作用
1、根据id查询用户信息:
parameterType:定义输入到sql中的映射类型
resultType:定义结果映射类型 #{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql。2、根据用户名查询用户信息
parameterType:定义输入到sql中的映射类型
resultType:定义结果映射类型${value}表示使用参数将${value}替换
,做字符串的拼接 注意:如果是取简单数量类型的参数,括号中的值必须为value #{}和${}
的区别:
${}
拼接符:字符串原样拼接 如果传入的是基本类型,那么${}
中的变量名必须是value 如果传入的参数是pojo类型,那么${}
中的变量名称必须是pojo中的属性.属性.属性… 注意:使用拼接符有可能造成sql注入,在页面输入的时候可以加入校验,不可输入sql关键字,不可输入空格 3、添加用户
select LAST_INSERT_ID() insert into user(username,birthday,sex,address) values(#{ username},#{ birthday},#{ sex},#{ address})
添加selectKey实现将主键返回
keyProperty:返回的主键存储在pojo中的哪个属性 order:selectKey的执行顺序,是相对于insert语句来说,由于mysql的自增原理执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after resultType:返回的主键是什么类型 LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值Mysql使用 uuid实现主键
将上面的selectKey标签内容改为如下:select uuid()
注意这里使用的order是"BEFORE"
4、删除用户
delete from user where id=#{ id}
5、修改用户
update user set username=#{ username},birthday=#{ birthday},sex=#{ sex},address=#{ address} where id=#{ id}
Mapper接口开发需要遵循以下规范:
1、Mapper.xml文件中的namespace与mapper接口的类路径相同。 2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同 4、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同在SqlMapConfig.xml文件中加载UserMapper.xml文件
hibernate和mybatis区别:
hibernate:它是一个标准的orm框架,比较重量级,学习成本高. 优点:高度封装,使用起来不用写sql,开发的时候,会减低开发周期. 缺点:sql语句无法优化 应用场景:oa(办公自动化系统), erp(企业的流程系统)等,还有一些政府项目, 总的来说,在用户量不大,并发量小的时候使用. mybatis:它不是一个orm框架, 它是对jdbc的轻量级封装, 学习成本低,比较简单 优点:学习成本低, sql语句可以优化, 执行效率高,速度快 缺点:编码量较大,会拖慢开发周期 应用场景: 互联网项目,比如电商,P2p等 总的来说用户量较大,高并发的项目. 高并发的时候是有很多用户在访问,导致出现系统数据不正确、丢失数据现象映射文件:
1)传入参数类型通过parameterType属性指定 2)返回结果集类型通过resultType属性指定 3)将字段名和属性名通过resultMap做一一对应关系发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月22日 16时46分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
js-禁止右键菜单代码、禁止复制粘贴代码
2019-03-04
Redis (三)——Linux 上安装 Redis
2019-03-04
java 多态类型转换
2019-03-04
常用正则表达式
2019-03-04
Java判断字符串是否为金额
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
结构型设计在工作中的一些经验总结
2019-03-04
OpenAI Gym简介及初级实例
2019-03-04
Java面向对象
2019-03-04
JAVA带标签的break和continue
2019-03-04
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2019-03-04
HTML 和 CSS 简单实现注册页面
2019-03-04
875 爱吃香蕉的珂珂(二分查找)
2019-03-04
Dijkstra算法的总结
2019-03-04
Vue实现选项卡功能
2019-03-04
vue中接收后台的图片验证码并显示
2019-03-04
趣谈win10常用快捷键
2019-03-04
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2019-03-04