文章目录
1.MyBatis入门
1.1 简介:
- 官网地址:https://mybatis.org/mybatis-3/zh/configuration.html
- MyBatis是一款优秀的持久层框架
- 它支持定制SQL,存储过程以及高级映射
- MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
- MyBatis可以使用简单的XML或注解来配置和映射原生数据类型,接口和java的POJO为数据库中的记录。
- MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foudation迁移到了goole code,并且改名为MyBatis.
- 2013年11月迁移到GitHub.
1.2 持久层
数据持久化
- 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
- 内存:断电即失
- 数据库(jdbc),io文件持久化
持久层
- 完成持久化工作的代码块
- 层界限十分明显
1.3 为什么需要MyBatis?
- 帮助程序员将数据存储到数据库中。
- 方便
- 传统的JDBC代码复杂,简化框架,自动化。
- 优点:
- 简单易学
- 灵活
- sql和代码的分离,提高了可维护性。
- 提供映射标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql.
2.第一个MyBatis程序
思路:搭建环境-》导入Mybatis-》编写代码-》测试
2.1 搭建环境
- 创建一个maven项目
- 删除src目录
- 导入maven依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
4.创建maven模板,其中的pom.xml文件直接引用父项目的依赖
5.在resources目录创建mybatis-config.xml配置文件
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--特别注意:
MyBatis中的配置,不但有类型限制,还有顺序限制
必须按照:<properties>、<settings>、<typeAliases>、<typeHandlers>、…顺序排放。-->
<configuration>
<!-- 1.properties属性引入外部配置文件 -->
<properties resource="db.properties"> </properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册-->
<mappers>
<mapper resource="com/wu/dao/BookAdminMapper.xml"/>
</mappers>
</configuration>
2.2编写代码
- 将获取SqlSession对象的代码封装为一个工具类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSessionFactory.openSession();
}
}
- 实体类
package com.wu.pojo;
public class BookAdmin {
private Integer id;
private String username;
private String password;
@Override
public String toString() {
return "BookAdmin{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public BookAdmin(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public BookAdmin() {
}
}
- Dao接口
public interface BookAdminDao {
public List<BookAdmin> getBookAdminLists();
}
- 接口实现类由原来的BookAdminDaoImpl转变为一个对应的Mapper文件
<!--特别注意:
MyBatis中的配置,不但有类型限制,还有顺序限制必须按照:
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,plugins?,envir onments?,databaseIdProvider?,mappers?)"…顺序排放。-->
<?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接口-->
<mapper namespace="com.wu.dao.BookAdminDao">
<select id="getBookAdminLists" resultType="com.wu.pojo.BookAdmin">
select * from bookadmin
</select>
</mapper>
2.3 测试
public class BookTest {
@Test
public void test()