本次学习内容:MyBatis 基础
介绍
mybatis 是一个持久层框架,是apache下的开源项目
是一个半自动化框架,与Hibernate相比,需要开发者手动写sql,这样更为灵活配置
mybatis 可以将PreparedStatement 中输入的参数自动进行输入映射,将查询结果灵活映射成 Java 对象
基本原理
执行过程:
SqlMapConfig.xml/mapper.xml … —>
SqlSessionFactory —>
SqlSession —>
Executor —>
mapper statement —>
db
- 配置数据源,映射文件
- 创建SqlSession 交给执行器操作数据库
- 操作数据库
- 对操作数据库存储做封装,包括SQL语句,输入参数,输出结果
遇到问题
报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): ………
然后,发现target目录下,XxxMapper.xml 没有在 target 下相应的目录生成
原因:
在使用maven等构建工具时,默认会将源码编译后再加上资源目录的文件放到target目录下作为最后运行的文件(可以是war,jar,或者目录)。有时为了方便,我们会在src/main/java源码目录下放了资源文件,例如mybatis的mapper文件,方便我们编程时展开查看。这时,我们需要设置编译时也将这些配置文件放到target目录下,否则最后的target目录式没有这些文件的。
解决:
在maven中,在build元素中添加:
|
|
总结
- Mybatis 框架实际上 是对原来 jdbc 代码的封装,将繁琐重复的代码,交付给配置文件和接口类进行灵活的对象映射
- 动态sql 有点像 jstl,很容易理解,目的就是为了灵活的玩 sql 语句
- 对于各种类型的sql 语句,需要记住mybatis的处理方式即可
- Mybatis 是将 对象或简单类型输入,将结果以数据实体/简单类型输出,省去了 jdbc 的复杂操作
- 进行 事务性操作时,一定要 commit,否则不生效
sqlSession.commit();
mybatis 插件
附录:
使用:https://www.oschina.net/p/intellij-mybatis-plugin
下载:https://github.com/CHN-Jaylin/Plugins-Cracked (破解的)