一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情
前言
- spring的功能太强大了,导致在SSM框架基础上的开发一直认为mybatis必须在spring上开发,甚至一度认为mybatis是spring的附属产品。其实不然,mybatis也是单独的框架。而且是mybatis为了兼容spring特意开发处一套适配了spirng的适配器。这才导致我们能在spring中正常使用m y ba ti s的。
如何使用
-
其实仔细看看源码就知道。spring管理了mybatis的sqlsessionfactory这些类。从而来初始化mybatis的相关配置
-
Mybatis的前身严格意义上说应该是Ibatis,后面我们都称之为Mybatis.为了解决Hibernate的不足,Mybatis产生了相对于Hibernate的全表映射Mybatis可以说是半自动映射的框架。因为他是实体和sql结合的一个框架。
-
Mybatis有SQL , 实体 , 映射规则三个主要对象主成。和Hibernate相比虽然多出了sql的编写,但是正是因为sql的编写使得Mybatis变得很方便。Hibernate因为不用sql,所以他无法调用存储过程这些数据库方法。但是Mybatis不一样,Mybatis可以调用sql中的存储过程
//获取mybatis-config.xml位置
InputStream inputStream = Resources.getResourceAsStream(Constant.MYBATIS);
//加载mybatis-config,并创建sqlsessionfactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建sqlsession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", 1);
//执行select语句,将resultSet映射成对象并返回
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<Student> students = studentMapper.getStudents();
studentPrint(students);
- 上面就是我们通过普通的Java程序加载mybatis的。然后通过sqlsession来获取我们对应的mapper.但是这种方式很low 。结合我们的spring对bean的管理方案来说正好无缝衔接了这个缺点。我们将mybatis放到spring中后就可以很优雅饿通过spring扫描注册的功能来完成属性的自动依赖注入
总结
- 知其然知其所以然。这才是我们学习的根本意义。不能仅仅停留在使用层上