一、MyBatis概述
1、ORM模型简介
ORM:对象关系映射(Object Relation Mapping)
1)传统JDBC程序的设计缺陷(实际项目不使用)
a.大量配置信息硬编码
b.大量的无关业务处理的编码
c.扩展优化极为不便
2、MyBatis概述
是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架
- 避免传统JDBC硬编码
- XML配置或者注解
- POJO对象和数据库记录直接映射
- 完善的文档支持
MyBatis的使用优势
- 简单易学,快速上手,学习成本低
- 数据库交互信息配置化
- 动态SQL处理
3、MyBatis使用优势及应用场景
- 更加关注SQL优化的项目
- 需求频繁更新改动的项目
二、开发环境搭建
- MyBatis的下载
- 项目中引入MyBatis支持
- 入门程序
- 了解MyBatis的工作原理
1)获取MyBatis
- 官方网站:http://www.mybatis.org/mybatis-3
- 下载离线项目包:https://github.com/mybatis/mybatis- 3/releases
- maven仓库获取mybatis依赖:http://mvnrepostiory.com中查询
2)传统项目中使用MyBatis
- 下载地址
https://github.com/mybatis/mybatis-3/releases
- 项目中引入
- 作为classpath依赖路径引入
- 作为依赖项目引入
3)maven方式引入
- 查询配置
step1:http://mvnrepository.com查询maven依赖配置
step2: maven项目的pom.xml中添加配置
step3:查看项目依赖
step4: 了解maven本地仓库
三、入门程序
- 开发环境
windows + jdk1.8.0u*** + IntelliJ idea + MySQL
- 需求:完成一个数据的查询流程
- 目的:了解mybatis核心api的操作流程
- 扩展:了解mybatis的工作流程
1)创建MVN项目
2)配置pom.xml依赖
step1:查询依赖http://mvnrepository.com,找到版本,复制配置信息
配置mybatis依赖
配置mysql依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.mybatis</groupId> <artifactId>mybatisDemo01</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <!-- 数据库依赖 注意mysql版本 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.18</version> </dependency> </dependencies> </project>
3)配置mybatis主配置文件
step1:在目录main/resource/中新建mybatis.xml文件
step2:从mybatis官方文档复制配置信息,下载解压mybatis包,里面的pdf文档-getting started
<?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/mytest"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 映射配置文件的路径 --> <mappers> <!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>--> </mappers> </configuration>
4)创建数据库
CREATE DATABASE mytest; USE mytest; CREATE TABLE users( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号', username VARCHAR(50) COMMENT '登录账号', userpass VARCHAR(50) COMMENT '登录密码', nickname VARCHAR(20) COMMENT '用户昵称' ); INSERT INTO users VALUES(1,'admin','admin','管理员'); INSERT INTO users VALUES(2,'manager','manager','管理员'); INSERT INTO users VALUES(3,'administator','administator','管理员');
5)在mvn项目中创建实体类
在main/java中新建包com.imooc.entity,新建类Users
package com.imooc.entity; public class Users { private Integer id; private String username; private String userpass; private String nickname; 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 getUserpass() { return userpass; } public void setUserpass(String userpass) { this.userpass = userpass; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
6)在resource中新建mapper文件夹,存放映射配置文件
新建配置文件usersMapper.xml,复制官方文档Exploring Mapped SQL Statements中的信息
<?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"> <!--namespace命名空间 通常情况,命名空间的值,就是当前操作实体类的全名称 --> <mapper namespace="com.imooc.entity.Users"> <!-- id是查询的id,resultType是返回值类型--> <select id="userList" resultType="com.imooc.entity.Users"> select * from users </select> </mapper>
7)在test/java中新增测试类TestDemo,使用junit进行测试
使用junit需要在pom.xml中增加依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
package com.imooc.test; 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 com.imooc.entity.Users; import java.io.IOException; import java.io.InputStream; import java.util.List; public class TestDemo { /* 通过junit进行测试 */ @Test public void testDemo1() throws IOException { //初始化mybaits配置环境 String resource = "mybatis.xml"; InputStream is=Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); //打开和数据库之间的会话 SqlSession session = sqlSessionFactory.openSession(); try { List<Users> ulist = session.selectList("userList"); for(Users user:ulist){ System.out.println(user); } } finally { session.close(); } } }