python有类似mybatis的框架_【MyBatis】 MyBatis入门

1、MyBatis简介

MyBatis是这个框架现在的名字,而此框架最早的名字是IBatis,其名字的含义是“internet”、“abatis”两个单词的组合,是在2002年的时候开始的一个开源项目,在2010年6月16日Apache将项目交与Google进行管理,更名MyBatis。所以2010年之后,MyBatis框架逐渐成为主流,比Hibernate发展更快。

IBatis和MyBatis两者的操作原理是相同的。IBatis变为了MyBatis之后,核心操作没有改变,但是配置部分有部分变化。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

持久层发展:实体Bean的设计思想 → JDO → Hibernate → MyBatis → JPA标准。MyBatis的性能优于Hibernate。

2、第一个MyBatis程序

本次使用Eclipse的Maven进行项目的构建,在pom.xml文件中添加如下代码;如果使用普通Java项目按需添加Jar包即可。

org.mybatis

mybatis

3.4.6

mysql

mysql-connector-java

5.1.39

在项目下新建目录:config,将config目录添加到classpath中(Build Path)。

范例:配置数据库信息config/dbconfig.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8

username=root

password=mysqladmin

范例:MyBatis核心配置文件config/mybatis-config.xml

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

对于一些配置做如下解释:

关于“ ”配置

此处表示进行事务的配置,但是在MyBatis中有两种事务配置方式:

JDBC :表示使用 JDBC 这种比较简单的方式进行事务的提交或回滚,同时它依赖于从数据源得到的连接来管理事务形式;

MANAGED:此配置几乎没有什么用处,它即不提交事务也不回滚事务,而是让容器来管理整个生命周期(例如:Spring 就是一个容器,负责所有对象的生命周期的控制) 。

关于“ ”配置

dataSource 主要使用基本的 JDBC 数据源接口来配置 JDBC 连接对象。而在 MyBatis 之中提供有三种可用的数据源配置类型:

UNPOOLED:这个数据源的实现是每次请求时简单打开和关闭连接操作。不过它的性能有一些慢,如果是一些简单的应用程序可以适用,因为它不需要及时取得可用连接。不过不同的数据库对此操作的表现也有所不同,所以对某些数据库来说配置数据源不重要,那么使用的机会也就少了,几乎不用;

POOLED :是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间,速度会快一些,这个是现在开发之中主要使用的形式;

JNDI:使用一些容器里面配置的数据库连接池,此处就是配置一个名称引用。

关于“ ”配置

这块为 MyBatis 的核心配置,主要是利用它来决定操作的数据表。

建立一张emp表,创建对应的简单Java类也是Emp类。

范例:建立数据库脚本

--创建'mybatis'数据库

CREATE DATABASE mybatis CHARACTER SETUTF8;--创建'emp'数据表

CREATE TABLEemp (

empnoINT(4),

enameVARCHAR(10) NOT NULL,

jobVARCHAR(9) ,

mgrINT(4) ,

hiredate DATE ,

salDOUBLE(7,2) ,PRIMARY KEY(empno)

);

范例:定义简单Java类--Emp.java

packagecom.github.logsave.pojo;importjava.util.Date;public classEmp {privateInteger empno;privateString ename;privateString job;privateInteger mgr;privateDate hiredate;private doublesal;publicInteger getEmpno() {returnempno;

}public voidsetEmpno(Integer empno) {this.empno =empno;

}publicString getEname() {returnename;

}public voidsetEname(String ename) {this.ename =ename;

}publicString getJob() {returnjob;

}public voidsetJob(String job) {this.job =job;

}publicInteger getMgr() {returnmgr;

}public voidsetMgr(Integer mgr) {this.mgr =mgr;

}publicDate getHiredate() {returnhiredate;

}public voidsetHiredate(Date hiredate) {this.hiredate =hiredate;

}public doublegetSal() {returnsal;

}public void setSal(doublesal) {this.sal =sal;

}

@OverridepublicString toString() {return "Emp [empno=" + empno + ", ename=" + ename + ", job=" +job+ ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal="

+ sal + "]";

}

}

此时虽然建立了Java类,但是简单Java类一定需要一个与它配合的映射文件。数据库Emp表对应的简单Java类是Emp.java,与Java类同一路径下新建EmpMapper.xml文件。

范例:定义EmpMapper.xml文件

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT * FROM emp WHERE empno = #{empno}

INSERT INTO emp(empno,ename,job,mgr,hiredate,sal)

VALUES (#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal})

增加操作之中是针对于简单Java类之中的内容进行取出并填充,所以在访问属性的时候使用“#{属性名称}”,编写SQL语句时最后一定不要加“;”。

多个XML配置文件及POJO之间相互引用,初学MyBatis容易出错。配置文件之间的引用关系如下图:

范例:编写程序完成数据增加操作

packagecom.github.logsave.test;importjava.io.IOException;importjava.io.Reader;importjava.util.Date;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importcom.github.logsave.pojo.Emp;public classTest01 {public static voidcreat(SqlSession sqlSession) {

Emp emp= newEmp();/*** 测试时运行第二次会报错:Duplicate entry '7499' for key 'PRIMARY'

* 原因是主键冲突了,修改Empno即可。*/emp.setEmpno(7499);

emp.setEname("ALLEN");

emp.setJob("SALESMAN");

emp.setMgr(7695);

emp.setHiredate(newDate());

emp.setSal(1600.00);

System.out.println("数据更新行数:"

+ sqlSession.insert("com.github.logsave.pojo.EmpMapper.creatOne",emp));

sqlSession.commit();//事务提交

}public static void selectByEmpNo(SqlSession sqlSession,intempno) {

System.out.println(sqlSession.selectOne("com.github.logsave.pojo.EmpMapper.selOne",empno));

}public static voidmain(String[] args) {try{//1、取得操作的SqlSession对象

String resource = "mybatis-config.xml"; //MyBatis配置文件路径

Reader reader = Resources.getResourceAsReader(resource); //当前配置文件输入流

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //数据库会话工厂

SqlSession sqlSession = sqlSessionFactory.openSession(); //取得连接//2、操作简单Java类//creat(sqlSession);//增加数据

selectByEmpNo(sqlSession,7499); //按empno查询数据

sqlSession.close();//关闭连接

} catch(IOException e) {

e.printStackTrace();

}

}

}

此时数据库之中已经正常保存了我们添加的数据。

总结一下MyBatis操作的步骤:

通过 Resources 取得配置文件(mybatis-config.xml )的信息,通过 Resource 取得一个 Reader 对象路径;

通过此 Reader对象肯定要读取配置,读取的配置用于实例化 SqlSessionFactoryBuilder 类对象,通过 SqlSessionBuilder 来建立 SqlSessionFactory 类对象;

利用 SqlSessionFactory 打开 SqlSession 对象;

利用 SqlSession 来实现数据的 CRUD 操作;

如果是更新则提交事务后关闭连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值