1.1mybatis的历史
MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开 发团队转投Google Code旗下, iBatis3.x 正式更名为MyBatis ,代码于2013年11月迁移到Github。
1.2什么是MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和 手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
1.3为什么要使用mybatis
相对于JDBC将SQL内置,mybatis可以手动编写自己想要的SQL语句,虽然核心SQL需要自己优化,但是也增加了他的灵活性
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,也就是将JDBC代码进行了封装,降低了使用难度。
相比于JDBC将SQL夹在java代码中,mybatis将SQL与代码分离,功能边界清晰,一个专注业务、一个专注数据。
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对 象)映射成数据库中的记录。如果有大量字段的POJO,也可以进行完美的映射。
1.想使用MyBatis就得先下载,前面说到,MyBatis与2013迁移到了GitHub,所以我们下载MyBatis需要到GitHub上进行下载。
下载地址:https://github.com/mybatis/mybatis-3
2.打开网页下拉,找到Download Latest的字样,点击进入找到自己的版本下载即可。
使用的开发工具是IDEA,搭建maven工程
1.首先我们需要在pom.xml中导入我们所需要的依赖
log4j
log4j
1.2.17
mysql
mysql-connector-java
5.1.48
org.mybatis
mybatis
3.5.3
junit
junit
4.12
2.创建mysql测试表
CREATE TABLE `test`.`test` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`gender` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`));
3.创建javabean对象
package com.wei.mybatis.beans;
public class Test {
private Integer id;
private String name;
private String email;
private String gender;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "test{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
4.创建MyBatis的全局配置文件:mybatis-config.xml。里面包含数据库连接信息,引入SQL映射文件等。
5.创建Mybatis的sql映射文件:TestMapper.xml,里面可以配置增删改查的sql语句映射
6.编写测试类进行测试,如果环境一切正常,我们就可以通过我们的代码获取到数据库中标的信息了。
package com.wei.mybatis.test;
import com.sun.xml.internal.ws.server.ServerRtException;
import com.wei.mybatis.beans.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class TestMybatis {
@Test
public void testSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
Test test = session.selectOne("mybatis.selectTest", 1);
session.close();
}
}
7.结果:可以看到控制台已经将数据库中查询的结果封装到我们的实体类中进行输出,此时整个MyBatis框架就可以完美运行。
DEBUG 01-20 19:47:10,089 ==> Preparing: select id,last_name lastName,email,gender from test_mybatis where id = ?; (BaseJdbcLogger.java:143)
DEBUG 01-20 19:47:10,144 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:143)
DEBUG 01-20 19:47:10,169 <== Total: 1 (BaseJdbcLogger.java:143)
Test{id=1, name='魏鹏程', email='[email protected]', gender=1}
Process finished with exit code 0