Mybatis学习 二
2019-10-25 06:33:47来源:博客园 阅读 ()
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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:JavaIO流总结
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- 学习Java 8 Stream Api (4) - Stream 终端操作之 collect 2020-06-11
- java学习之第一天 2020-06-11
- Java学习之第二天 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash