一、简介:
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
当前,最新版本是MyBatis 3.5.5 ,其发布时间是2020年6月4日。
二、作用以及优势:
为了和数据库进行交互,通常的做法是将SQL语句写在Java代码中,SQL语句和Java代码耦合在一起不利于后期维护修改,而MyBatis能够帮助我们将SQL语句和Java代码分离,方便了后期因需求变动而对SQL语句进行修改。(联系properties文件的作用)。
三、使用方法:
MyBatis共有三种使用方法,本文只介绍比较流行的一种:
1.准备工作:
①在IntelliJ IDEA中创建Maven web app 项目,在pom.xml中添加如下依赖后并点击更新按钮:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<!-- MySQL数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
②创建user_info并填入数据:
create table user_info(
id char(36) primary key,
user_name varchar(15) unique,
password varchar(15) not null
)
insert into user_info (id, user_name, password)
values ('3ddcf637-15a8-49d9-a378-b3fa2f2f9c65', 'Aimee', '1983_2560x');
insert into user_info (id, user_name, password)
values ('7eb9deed-ec87-416e-abb3-1a5a2ce819de', 'Cassie', 'xm@560_lq');
③创建src/main/java文件夹和src/main/resources文件夹,并标分别记为java文件夹和resources文件夹。
2.使用方式:
①在resources文件夹中创建名为mybatis-config.xml的xml文件,并写入如下代码:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserInfoMapper.xml"/>
</mappers>
</configuration>
②在resources中创建名为UserInfoMapper.xml的xml文件,并写入如下代码:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jm.area.IUserInfoDao">
<select id="select" resultType="java.lang.String">
select name from user_info where id = #{id}
</select>
</mapper>
③在com.eg.user包中创建名为IUserInfoDao的接口:
package com.eg.user;
import org.apache.ibatis.annotations.Param;
public interface IUserInfoDao {
String select(String id);
}
④在com.eg.test包中创建名为test的类:
package com.eg.test;
import com.eg.user.IUserInfoDao;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test {
public static void main(String[] args) throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession对象,代表与数据库的一次会话,用完需要关闭。注意:由于SqlSession为非线程安全的,所以该变量应定义为局部变量,不要定义成全局变量
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
IUserInfoDao userInfoDao = sqlSession.getMapper(IUserInfoDao.class);
String name = userInfoDao.select("3ddcf637-15a8-49d9-a378-b3fa2f2f9c65");
System.out.println(name);//控制台输出Aimee
}catch (Exception e){
e.printStackTrace();
}
}
}
⑤运行程序。