1.Mybatis概述
MyBatis是这个框架的当前名称,这个框架的最初名称是IBatis,意思是“Internet”和“Abatis”两个词的组合,开始于2002年,并于2010年6月启动,是一个开源项目。 16日,Apache将该项目的控制权移交给谷歌,并将其更名为MyBatis。因此,从2010年开始,MyBatis框架逐渐成为主流,并且发展得早于Hibernate。
IBatis 和MyBatis 的工作原理是相同的。 IBatis 成为MyBatis 后,核心行为保持不变,但一些组件发生了变化。
MyBatis 是领先的持久层框架,支持定制SQL、存储过程和高级映射。 MyBatis 避免了几乎所有的JDBC 代码、参数的手动设置以及结果集的检索。 MyBatis 可以使用简单的XML 或注释来配置和映射本机信息,将接口和Java POJO(普通旧Java 对象)映射到数据库中的记录。
持久层开发:实体Bean设计思想JDOHibernateMyBatisJPA标准。 MyBatis 的性能优于Hibernate。
MyBatis官网:https://mybatis.org/mybatis-3/
2.第一个MyBatis程序
这次,在Eclipse 中使用Maven 构建项目,并将以下代码添加到pom.xml 文件中。如果使用常规Java项目,只需根据需要添加Jar包即可。
在项目配置下创建一个新目录,并将配置目录添加到类路径(构建路径)中。
示例:配置数据库信息config/dbconfig.properties
范例:MyBatis核心配置文件config/mybatis-config.xml
下面解释了一些配置。
关于“transactionManager type=’jdbc’/”设置
这代表事务配置,但是MyBatis有两种事务配置方法。
· JDBC:表示使用JDBC。这是一种相对简单的提交或回滚事务的方式,并且依赖于从数据源获取的连接来管理事务形式。
· MANAGED:此配置对于提交或回滚事务几乎没有什么用处,但可以让容器管理整个生命周期(例如Spring是一个负责控制所有对象生命周期的容器)。
关于“dataSource type=’POOLED’”设置
dataSource主要使用基本的JDBC数据源接口来构造JDBC连接对象。 MyBatis 提供三种数据源配置类型:
· UNPOOLED:该数据源通过简单地为每个请求打开和关闭连接来实现。不过,性能有点慢,适用于一些简单的应用,因为它不需要及时获取可用的连接。然而,每个数据库执行此操作的方式不同,并且对于某些数据库来说,数据源配置并不重要,因此数据源不经常使用,几乎没有必要。
· POOLED:JDBC 连接对象的数据源连接池实现。用于避免创建新连接实例时所需的初始连接和身份验证时间。这是一种主要用于高速的格式。目前正在开发中。
· JNDI:使用在某些容器中配置的数据库连接池。现在配置名称查找。
关于“映射器”设置
这是MyBatis的核心配置,主要用于确定操作的数据表。
创建一个emp表并创建一个相应的简单Java类(也是一个Emp类)。
范例:建立数据库脚本
范例:定义简单Java类–Emp.java
public class Emp { private String ename; private Integer getEmpno() { return empno; } .empno=empno; } public String getEname() { return ename } public void setEname(String ename) { this.ename=ename ; } public String getJob() { return job .job=job; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr } public Date getHiredate(); this .hiredate=招聘; } public double getSal() { return sal; } public void setSal(double sal) { this.sal=sal; } @Override public String toString() { return ‘Emp [empno=’ + empno + ‘, ename=’ + ename + ‘, job=’ + job + ‘, mgr=’ + mgr + ‘,hiredate=’ + recruate + ‘, sal=’ + sal + ‘]’;在本例中它是一个Java 类,但是一个简单的Java 类需要一个匹配的映射文件。与数据库Emp表对应的简单Java类是Emp.java。在与Java 类相同的路径中创建一个新的EmpMapper.xml 文件。
范例:定义EmpMapper.xml文件
?xml 版本=’1.0′ 编码=’UTF-8′ ?DOCTYPE 映射器PUBLIC ‘-//mybatis.org//DTD 映射器3.0//EN’ ‘http://mybatis.org/dtd/mybatis-3-mapper .dtd’ !–每个POJO对应一个MyBatis命名空间,不能重复。
命名空间设置可以区分不同表上的同类型操作。如果您使用它,请使用“namespace.id”来调用它。
命名空间可以有任何名称,唯一性通常基于表名称、实体类或表名称。
resultType 使用完整路径。
—
Mapper 命名空间=’com.github.logsave.pojo.EmpMapper’ 选择id=’selOne’ resultType=’com.github.logsave.pojo.Emp’ SELECT * FROM emp WHERE empno=#{empno} /select 插入id=’ creatOne’parameterType=’com.github.logsave.pojo.Emp’ 插入emp(empno,ename,job,mgr,hiredate,sal) 值(#{empno},#{ename},#{job},#{ mgr},#{hiredate},#{sal}) /insert/mapper 追加操作是提取并填充一个简单的Java 类的内容。因此,访问属性时,请使用“#{属性名称}”。编写SQL语句时在末尾添加“;”。
多个XML配置文件和POJO互相引用,导致学习MyBatis时很容易出错。配置文件之间的引用关系如下。
范例:编写程序完成数据增加操作
public class Test { public static void creat(SqlSession sqlSession) { Emp emp=new Emp(); /*** 第二次运行测试报告错误:重复条目’7499′ in key ‘ Major’
*这是由于主键冲突造成的。只需修复Empno 即可。
*/
System .out.println(‘数据更新行数:’ + sqlSession.insert(‘com.github.logsave.pojo.EmpMapper.creatOne’,emp)); //发送事务} public static void selectByEmpNo (SqlSession sqlSession,int empno) { System.out.println(sqlSession.selectOne(‘com.github.logsave.pojo.EmpMapper.selOne’,empno)); } public static void main(String[] args) { try { //1. 操作获取SqlSession 对象。 String resource=’mybatis-config.xml’; //MyBatis 配置文件路径Reader=Resources.getResourceAsReader(resource); //当前配置文件的输入流SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder() .build(reader);数据库会话工厂SqlSession=sqlSessionFactory.openSession(); //2. 简单操作Java class //creat(sqlSession) //添加数据。7499); //用empno查询数据sqlSession.close(); //关闭连接} catch(IOException e) { e.printStackTrace() } } 至此,添加的数据已成功保存。数据库。
操作MyBatis的步骤可以概括如下:
· 通过Resource获取配置文件(mybatis-config.xml)信息,通过Resource获取Reader对象路径。
· 必须通过此Reader 对象读取配置。读取的配置用于实例化一个SqlSessionFactoryBuilder类对象,然后通过SqlSessionBuilder建立该对象。
· 使用SqlSessionFactory 打开SqlSession 对象。
· 使用SqlSession对数据实现CRUD操作。
· 对于更新,请在提交事务后关闭连接。
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/84240.html