两张图彻底搞懂MyBatis的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}
复制代码


流程图

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



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

传送门:mp.weixin.qq.com/s/JzddfH-7y…


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值