MyBatis框架
一。MyBatis简介
MyBatis官网
1.1MyBatis的历史
①.MyBatis是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x 正式更名为MyBatis ,代码于2013年11月迁移到Github
②.iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
1.2MyBatis简介
①.MyBatis是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架
②.MYBatis消除了几乎所有的JDBC代码和手动设置参数以及对结果集
的检索
③.将接口的Java的POJOs(Plain Ordinary Java Objects),普通的Java对象映射成数据库中的记录
④.它是一个半自动ORM(Object Relation Mapping对象关系映射)的框架,而Hibernate是全自动的
1.3为什么要使用MyBatis?
ps:对现有持久化技术的对比
1.JDBC
① SQL夹杂在Java代码块中,耦合度高导致硬编码内伤
② 维护不易且实际开发过程中SQL时有变化,频繁修改情况多见
2.Hibernate 与 JPA
① 长且复杂的SQL,对于Hibernate而言,处理起来也不容易
② 内部自动生产的SQL,不容易做特殊优化
③ 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难,导致数据库性能下降
3.MyBatis
① 对开发者而言, 核心SQL还是需要自己优化
② SQL与Java编码分开,功能边界清晰,一个专注于业务(Java),一个专注于数据(SQL)
二。如何使用MyBatis
2.1开发环境的准备
① 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。
② 如果使用 Maven 来构建项目,则需将下面的依赖代码置 于pom.xml 文件中:
Maven依赖包网址
2.2 导包
① 在pom.xml中导入MyBatis框架的jar包,MySQL驱动包,log4j的jar包
2.3创建测试表
① 创建库 CREATE DATABASE test_mybatis;
② 创建表
CREATE TABLE tbl_user(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50),
email VARCHAR(50),
gender CHAR(1)
);
2.4创建User类
public class User {
private Integer id ;
private String lastName;
private String email ;
private String gender ;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
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 "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
}
2.5 MyBatis配置文件
① 编写user.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="mapper.UserMapper">
<!-- 从数据库查询数据-->
<select id="listUser" resultType="pojo.User">
SELECT
id id,
last_name name,
email email
gender gender
FROM tbl_user;
</select>
</mapper>
② 配置mybatis-config.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="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test_mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<!--将写好的user.xml映射文件注册到全局配置文件mybatis-config.xml中-->
<mapper resource="mapper/user.xml"></mapper>
</mappers>
</configuration>
2.6 编写UserMapper接口
public interface UserMapper {
//在Mybatis中,接口的方法要映射到user.xml的select的id
//查询用户
public List<User> listUser();
}
2.7 测试
@Test
public void ListAllTest(){
String conf = "mybatis-config.xml";
//1.读取配置文件
Reader reader = Resources.getResourceAsReader(conf);
//创建SessionFactory对象
SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
SqlSessionFactory sf= sfb.build(reader);
//创建Session
SqlSession session = sf.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.listUser();
for(User u : users){
System.out.println(u.toString());
}
//关闭session会话
session.close();
}
2.8 控制台查看结果
控制台输出结果:可以从数据库中查询得到
User{id=1, lastName=‘jack’, email=‘jack123@123.com’,gender=‘男’}
User{id=2, lastName=‘lucy’, email=‘lucy123@123.com’,gender=‘女’}
了解更多请点击此处 查看官方手册