1.Mybatis
环境:
- JDK1.8
- Mysql5.7
- maven3.6.1
- IDEA
回顾:
- JDBC
- Mysql
- java基础
- Maven
- junit
1.1简介
- Mybatis是一款优秀的持久层框架
- 它支持定制化SQL,存储过程以及高级映射
- 几乎避免了所有JDBC手动代码和手动参数来获取结果集
- 可使用简单的xml或注解来配置和映射原生类型,接口和JAVA的POJO(java对象)为数据库中的记录
获取方式:
1.maven仓库
2.github开源社区
3.Mybatis中文文档
1.2 持久化
持久化就是将程序的数据在持久状态和瞬时状态的转化的过程
内存:断电即失
数据库,io文件持久化。
1.3 持久层
Dao层,Service层,Controller层
- 完成持久化工作的代码块
- 层界限十分明显。
1.4 为什么要使用Mybatis
- 方便
- 传统JDBC太过复杂。
- 帮助程序员将数据存入数据库
优点:
- sql与代码分离,提高了可维护性
- 提供映射标签,支持对象与数据库的orm映射
- 提供对象映射关系标签,支持对象关系组件维护
- 提供xml配置文件,支持编写动态mysql
2.第一个Mybatis程序
思路: 搭建环境 – 导入Mybatis – 编写代码—测试
2.1 搭建数据库
新建项目:
2.2创建一个模块
从sqlSessionFactory中获取sqlSession,sqlSession中完全包含了面向数据库执行sql命令的所有方法
2.3 编写代码
- 实体类
- Dao接口
- 接口实现类由原来的UserDaoImpl变为mapper配置文件
问题解决:
1.中出现初始化失败的即java.lang.ExceptionInInitializerError,注意看下后面提示的错误在什么地方,我的是出现在数据库用户名时少删了中括号,也有可能因为其他问题,具体看你提示的内容。
2.若是出现空指针异常的,可能是user工具类中的sqlsessionfactory声明了两次。注意那一句的删掉前面的类声明
3.注释中有没有中文我觉得没有什么影响,主要注意高版本的mysql要将usessl改为flase因为高版本用true会报错,具体原因可以百度一下
4.由于maven的限制,可以将usermapper放在resources目录下,这样maven就能扫描到了,常规做法也是这样的,或者在pom中build一下,指定将其他文件下的xml也扫进去。
5.如果打印出的是地址,需要重写实体类的toString方法
2.编写顺序
- 1.先导入相应依赖,以及在build中配置resources,防止我们的资源导入失败
- 2.先mybatis核心配置文件
- 3.写mybatis工具类
- 4.编写实体类
- 5.编写接口
- 6.编写接口对应mapper文件
- 7.编写测试类