Mybatis学习 二

2019-10-25 06:33:47来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Mybatis学习 二

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

2.1、准备开发环境

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

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>

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

 

 

 

 

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

 

 

 

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

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

<configuration>:Mybatis配置文件的根元素为

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

<transationManager>:配置Mybatis的事务管理

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

 

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

 

 

<mapper namespace="com.test.springtest.User"

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

Mapper中Namespace的定义本身是没有限制的,只要不重复即可,但如果使用Mybatis的DAO接口动态代理,则namespace必须为DAO接口的全路径,例如:com.zpc.mybatis.dao.UserDao

 

5、测试

 

 

 

 

 

 

 

在使用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文件夹

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

 

 

说明:

         程序先读取配置文件,然后通过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接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作

 


原文链接:https://www.cnblogs.com/lovetq520/p/11699070.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:超炫酷的 IntelliJ IDEA 插件(一)

下一篇:JavaIO流总结