提到看源码,不少同窗心里的恐惧的,其实这个从人性的角度来讲是很是正常的,由于人们对未知的事物,都是很是恐惧的,其次,你心里可能始终以为,好像不会原理也仍是能工做啊,你的潜意识里没有强烈的欲望.从阅读源码的经从来说,Java三大框架SSM中,Mybatis的源码是最适合入门的.java
这是一个简单的Mybatis保存对象的例子sql
@Test
public void testSave() throws Exception {
//建立sessionFactory对象
SqlSessionFactory sf = new SqlSessionFactoryBuilder().
build(Resources.getResourceAsStream("mybatis-config.xml"));
//获取session对象
SqlSession session = sf.openSession();
//建立实体对象
User user = new User();
user.setUsername("toby");
user.setPassword("123");
user.setAge(23);
//保存数据到数据库中
session.insert("com.toby.mybatis.domain.UserMapper.add", user);
//提交事务,这个是必需要的,不然即便sql发了也保存不到数据库中
session.commit();
//关闭资源
session.close();
}
复制代码
<mapper namespace="com.toby.mybatis.domain.UserMapper">
<!--#{}在传入的对象中找对应的属性值-->
<!--parameterType传入的参数是什么类型-->
<insert id="add" parameterType="com.toby.mybatis.domain.User">
INSERT INTO USER (username,password,age) VALUES (#{username},#{password},#{age})
</insert>
</mapper>
复制代码
可是在实际中,咱们都不是这样操做的,咱们是经过Mapper接口,调用接口方法,就能实现CRUD操做,那么关键是,这个接口究竟作了什么事,才是咱们关心的.数据库
只要把下面这段代码究竟发生了什么事弄明白,就明白,这个Mapper接口究竟作了什么事.session
public void testGetObject() throws Exception {
SqlSession session = MybatisUtil.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.get(5L);
System.out.println(user);
session.close();
}
复制代码
public interface UserMapper {
public void add(User user);
public User get(Long id);
}
复制代码
可是我认为,一张流程图和时序图就看明白这期间所发生的事mybatis
肥朝 是一个专一于 原理、源码、开发技巧的技术公众号,号内原创专题式源码解析、真实场景源码原理实战(重点)。扫描下面二维码关注肥朝,让本该造火箭的你,再也不拧螺丝!app