mybatis是基于JDBC的一种在Java中实现数据库操作的框架:
mybatis是:MyBatis 的主要思想是将程序中的大量 SQL 语句剥离出来,使用 XML 文件或注解的方式实现 SQL 的灵活配置,将 SQL 语句与程序代码分离,在不修改 程序代码的情况下,直接在配置文件中修改 SQL 语句。 MyBatis 与其它持久性框架最大的不同是, MyBatis 强调使用 SQL ,而其它框架(例如 Hibernate )通常使用自定义查询语言,即 HQL ( Hibernate 查询语言)或 EJB QL ( Enterprise JavaBeans 查询语言)。
优点:MyBatis 是免费且开源的。 与 JDBC 相比,减少了 50% 以上的代码量。 MyBatis 是最简单的持久化框架,体积小巧并且学习门槛低。 MyBatis 相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分 离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。 提供 XML 标签,支持编写动态 SQL 语句。 提供映射标签,支持实体对象与数据库的表字段关系映射。
缺点:编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求。 SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
使用mybatis需要导入相关架包:
官网地址:https://github.com/mybatis/mybatis-3/releases
导入相关包后:
准备工作:
创建数据库:
DROP TABLE IF EXISTS `website`;
CREATE TABLE `website` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`url` varchar(30) COLLATE utf8_unicode_ci DEFAULT '',
`age` tinyint(3) unsigned NOT NULL,
`country` char(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`createtime` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
、创建映射文件:
insert into website
(name,url,age,country)
values(#{name},#{url},#{age},#{country})
创建实体类:
import java.util.Date;
public class Website {
private int id;
private String name;
private String url;
private int age;
private String country;
private Date createtime;
@Override
public String toString() {
return "Website [id=" + id + ", name=" + name + ", url=" + url + ", age=" + age + ", country=" + country
+ ", createtime=" + createtime + "]";
}
}
配置日志文件:
MyBatis 默认使用 log4j 输出日志信息,如果开发者需要查看控制台输出的 SQL 语句,可以在 classpath 路径下配置其日志文件。在 mybatisDemo 的 src 目录下创建 log4j.properties 文件,其内容如下:
# Global logging configuration
log4j.rootLogger=ERROR,stdout
# MyBatis logging configuration...
log4j.logger.com.apesource=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
配置核心文件:
在测试类中进行操作:
使用步骤:
1 、首先,获取 SqlSessionFactoryBuilder 对象,可以根据 XML 配置文件或者 Configuration 类的实例构建 该对象。
2 、其次,通过 SqlSessionFactoryBuilder 对象来获取 SqlSessionFactory 对象。
3、 最后,获取 SqlSessionFactory 对象之后,就可以进一步获取 SqlSession 实例。 SqlSession 对象中完全 包含以数据库为背景的所有执行 SQL 操作的方法,用该实例可以直接执行已映射的 SQL 语句。