图解源码:MyBatis 的 Mapper 原理
source link: https://mp.weixin.qq.com/s/Ki1f_mkoOkPMQiGbJWu4Sw?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
提到看源码,很多同学内心的恐惧的,其实这个从人性的角度来说是非常正常的,因为人们对未知的事物,都是非常恐惧的,其次,你内心可能始终觉得,好像不会原理也还是能工作啊,你的潜意识里没有强烈的欲望.从阅读源码的经历来说,Java三大框架SSM中,Mybatis的源码是最适合入门的.
简单使用
这是一个简单的Mybatis保存对象的例子
1@Test
2public void testSave() throws Exception {
3 //创建sessionFactory对象
4 SqlSessionFactory sf = new SqlSessionFactoryBuilder().
5 build(Resources.getResourceAsStream("mybatis-config.xml"));
6 //获取session对象
7 SqlSession session = sf.openSession();
8 //创建实体对象
9 User user = new User();
10 user.setUsername("toby");
11 user.setPassword("123");
12 user.setAge(23);
13 //保存数据到数据库中
14 session.insert("com.toby.mybatis.domain.UserMapper.add", user);
15 //提交事务,这个是必须要的,否则即使sql发了也保存不到数据库中
16 session.commit();
17 //关闭资源
18 session.close();
19}
1<mapper namespace="com.toby.mybatis.domain.UserMapper">
2 <!--#{}在传入的对象中找对应的属性值-->
3 <!--parameterType传入的参数是什么类型-->
4 <insert id="add" parameterType="com.toby.mybatis.domain.User">
5 INSERT INTO USER (username,password,age) VALUES (#{username},#{password},#{age})
6 </insert>
7</mapper>
引出主题
但是在实际中,我们都不是这样操作的,我们是通过Mapper接口,调用接口方法,就能实现CRUD操作,那么关键是,这个接口究竟做了什么事,才是我们关心的.
只要把下面这段代码究竟发生了什么事弄明白,就明白,这个Mapper接口究竟做了什么事.
1public void testGetObject() throws Exception {
2 SqlSession session = MybatisUtil.openSession();
3
4 UserMapper mapper = session.getMapper(UserMapper.class);
5 User user = mapper.get(5L);
6
7 System.out.println(user);
8 session.close();
9}
1public interface UserMapper {
2
3 public void add(User user);
4 public User get(Long id);
5}
流程图
但是我认为,一张流程图和时序图就看明白这期间所发生的事
Recommend
-
117
MyBatis SQL Mapper Framework for Java
-
27
-
51
title: 玩转spring-boot-mybatis date: 2019-03-11 19:36:57 type: "mybatis" categories: mybatis #分类名 tags: mybatis --- 作为持久层的ORM框架,目前在国内主流之一就是MyBat...
-
11
README.md MyBatis 通用 Mapper4
-
53
hello~各位读者好,我是鸭血粉丝(大家可以称呼我为「阿粉」)。今天,阿粉带着大家来了解一下 mybatis 接口的创建。 1.上期回顾 首先,我们还是回顾一下上篇文件的类容。先看下这个测试类,大家还有...
-
35
动态代理的功能:通过拦截器方法回调,对目标target方法进行增强。言外之意就是为了增强目标target方法。上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标target都不要的科幻模式。注:本文默认认为,读者对动态代理的原理是...
-
7
【DB系列】SpringBoot系列Mybatis之Mapper注册的几种方式
-
3
【DB系列】SpringBoot系列Mybatis之Mapper接口与Sql绑定几种姿势 ...
-
3
【SpringBoot + Mybatis系列】Mapper接口注册的几种方式SpringBoot项目中借助Mybatis来操作数据库,对大部分java技术栈的小伙伴来说,并不会陌生;我们知道,使用mybatis,一般会有下面几个Entity: 数据库实体类
-
4
需下载文件配置config.xmlconfig.xml 文件指定自动生成代码时的一些配置项:数据库的url, 用户名密码,生成类名、导出地址等。数据库url, 用户名,密码是最重要的配置。下面是示例:<?xml version="1.0" enc...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK