Mybatis学习 二

MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

2.1、准备开发环境

 1、创建测试项目,普通java项目或者是JavaWeb项目均可,并导入mybatis包



org.mybatis
mybatis
3.4.6


2、建立测试数据库表及对应的POJO

Mybatis学习 二_第1张图片

 

 Mybatis学习 二_第2张图片

 

 

3、resources建立mybatis配置文件mybatis_config.xml

 

Mybatis学习 二_第3张图片

 

 

Mybatis的配置文件默认命名为mybatis-config.xml,程序运行前需要加载这个文件;

第一行是XML声明,指定字符集;

:Mybatis配置文件的根元素为

:用来配置Mybatis的环境,即连接的数据库。

:配置Mybatis的事务管理

:数据源,Mybatis推荐使用数据源(维持着一个连接池,而不用每次连接都开启一个连接)来管理数据库连接

 

4、定义操作表的sql映射文件

Mybatis学习 二_第4张图片

 

 

 
 

         为这个mapper指定一个唯一的namespace,它习惯上设置为:“包名+sql映射文件名”,这样可以保值名的唯一。namespace只要求唯一,不是指向某个具体文件

 

5、测试

Mybatis学习 二_第5张图片

 

 Mybatis学习 二_第6张图片

 

 

 

 

 

在使用idea运行时,遇到一个奇怪的问题,控制台报

### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/founderit/mapper/Object.xml
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64)
at com.founderit.main.TestMain.main(TestMain.java:20)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/founderit/mapper/Object.xml
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:121)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:99)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:78)
... 2 more
Caused by: java.io.IOException: Could not find resource com/founderit/mapper/Object.xml
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:100)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:371)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:119)
... 4 more

 

Object.xml文件明明存在,后来通过万能的baidu查到原因

原因: idea不会编译src的java目录的xml文件

 解决方法:将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹




src/main/java

**/*.xml

true


 

 

说明:

         程序先读取配置文件,然后通过SqlSession对象来操作持久化对象。

        为了使用Mybatis进行持久化操作,可以把上述程序总结如下操作步骤:

        1)编写持久化类(e.g. User)和其持久化操作的Mapper.xml(e.g. User.xml),并在mapper.xml中定义SQL语句

        2)获取SqlSessionFactory

        3)获取SqlSession

        4)用面向对象的方式操作数据库(session.insert()、session.update()、session.select()。。。。)

        5)提交事务,关闭SqlSession

还有几点需要注意

SqlSession是线程不安全的,多线程下不能被共享

SqlSession每次使用完后必须正确关闭,这一步是必须的

SqlSession可以直接调用方法的id进行数据库操作,但是一般建议使用SqlSession获取Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作

 

你可能感兴趣的:(Mybatis学习 二)