文档章节

两张图彻底搞懂MyBatis的Mapper原理!

李红欧巴
 李红欧巴
发布于 03/08 21:49
字数 452
阅读 119
收藏 0

作者:肥朝

简单使用

这是一个简单的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}

 

流程图

但是我认为,一张流程图和时序图就看明白这期间所发生的事

 

 

免费Java资料领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。

传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q

© 著作权归作者所有

李红欧巴

李红欧巴

粉丝 53
博文 143
码字总数 474013
作品 0
长沙
私信 提问
【Mybatis】多表查询

多表查询一直是数据库的关键部分。网上关于Mybatis的例子天华龙凤,又要自己新建实体类,又在一个实体类中将另一个实体类联系起来,在我看来大可不必,只要将sql查询结果的视图映射到Java里面...

yongh701
2017/11/21
0
0
就是让你懂Spring中Mybatis的花样配置

一、前言 Mybatis作为一个优秀的存储过程和高级映射的持久层框架,目前在项目实践中运用的比较广泛,最近做项目时候发现了一种之前没见过的配置方式,这里总结下常用的配置方式以便备忘查找。...

今天你不奋斗明天你就落后
2017/09/03
0
0
MyBatis Error:BindingException Mapper method attempted to return null

错误描述: 在使用Mybatis的项目中有一个查询最新插入数据的需求。我写了如下SQL语句: 当表中有数据时,使用这个SQL查询是没有错误的,但是当表中没有数据则会出现如下错误: org.apache.i...

开源中国首席有志青年
2018/01/14
116
0
呸呸呸/mybatis-mapper

#MyBatis通用Mapper ##方便的使用MyBatis单表的增删改查 为啥要写这个? 因为我最近做了个项目,必须用mybatis,重点是我不想写重复的sql 通用mapper有好多了,为啥要重新写一个? 本来是不想写的...

呸呸呸
2016/11/14
0
0
呸呸呸/sense-support

#为什么要做一个“sense”脚手架 java开发中常用的框架其实就是几个,spring(mvc),hibernate,mybatis,lucene,使用的数据库也就那么几种,mysql,redis,memcahced,mongodb。在遥远的“远...

呸呸呸
2016/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部