欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-08 18:52:50
作者:肥朝 简单使用 这是一个简单的Mybatis保存对象的例子 引出主题 但是在实际中,我们都不是这样操作的,我们是通过Mapper接口,调用接口方法,就能实现CRUD操作,那么关键是,这个接口究竟做了什么事,才是我们关心的. 只要把下面这段代码究竟发生了什么事弄明白,就明白,这个Mapper接口 ......

作者:肥朝

简单使用

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

 

流程图

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

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

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

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

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

 

 

免费java资料领取,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo/kafka、hadoop、hbase、flink等高并发分布式、大数据、机器学习等技术。

传送门:https://mp.weixin.qq.com/s/jzddfh-7ynudmkjt0irl8q