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;
、创建映射文件:
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="com.apesource.mapper.WebsiteMapper">
-
- <insert id="insertWebsite" parameterType="com.apesource.entity.Website">
- insert into website
- (name,url,age,country)
- values(#{name},#{url},#{age},#{country})
- insert>
-
-
- <select id="selectAllWebsite"
- resultType="com.apesource.entity.Website">
- select * from website
- select>
- mapper>
创建实体类:
- 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
配置核心文件:
- configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <settings>
-
- <setting name="logImpl" value="LOG4J" />
- settings>
-
-
- <environments default="development">
- <environment id="development">
-
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
-
- <property name="driver" value="com.mysql.cj.jdbc.Driver" />
-
- <property name="url"
- value="jdbc:mysql://localhost:3306/my_db?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8" />
- <property name="username" value="root" />
- <property name="password" value="......" />
- dataSource>
- environment>
- environments>
-
-
- <mappers>
- <mapper resource="com/apesource/mapper/WebsiteMapper.xml" />
- mappers>
- configuration>
在测试类中进行操作:
使用步骤:
1 、首先,获取 SqlSessionFactoryBuilder 对象,可以根据 XML 配置文件或者 Configuration 类的实例构建 该对象。
2 、其次,通过 SqlSessionFactoryBuilder 对象来获取 SqlSessionFactory 对象。
3、 最后,获取 SqlSessionFactory 对象之后,就可以进一步获取 SqlSession 实例。 SqlSession 对象中完全 包含以数据库为背景的所有执行 SQL 操作的方法,用该实例可以直接执行已映射的 SQL 语句。