Mybatis简介
1.什么是Mybatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
准备工作
创建db_mybatis库,emp表,插入若干记录
-- 1、创建数据库 db_mybatis 数据库
create database if not exists db_mybatis charset utf8;
use db_mybatis; -- 选择db_mybatis数据库
-- 2、删除emp表(如果存在)
drop table if exists emp;
-- 3、在 db_mybatis 库中创建 emp 表
create table emp(
id int primary key auto_increment,
name varchar(50),
job varchar(50),
salary double
);
-- 4、往 emp 表中, 插入若干条记录
insert into emp values(null, '李四', '程序员', 3300);
insert into emp values(null, '王五', '程序员', 2800);
insert into emp values(null, '小花', '程序员鼓励师', 2700);
insert into emp values(null, '赵六', '部门总监', 4200);
insert into emp values(null, '小明', '程序员', 3000);
1.创建工程
1.1 创建一个Maven的web工程
1.2 生成web.xml
1.3 创建配置文件
在src/main/resources下面:
创建mybatis/mybatis-config.xml
创建mapper/mapper.xml
1.4 项目创建和结构展示
2.添加依赖和配置文件
2.1 给pom.xml文件添加依赖
<dependencies>
<!-- junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
</dependencies>
2.2 添加配置文件内容
给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">
<!-- MyBatis的全局配置文件 -->
<configuration >
<!-- 1.配置环境,可配置多个环境(比如:develop开发、test测试) -->
<environments default="develop">
<environment id="develop">
<!-- 1.1.配置事务管理方式:JDBC/MANAGED
JDBC:将事务交给JDBC管理(推荐)
MANAGED:自己管理事务
-->
<transactionManager type="JDBC"></transactionManager>
<!-- 1.2.配置数据源,即连接池 JNDI/POOLED/UNPOOLED
JNDI:已过时
POOLED:使用连接池(推荐)
UNPOOLED:不使用连接池
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 2.导入Mapper配置文件,如果mapper文件有多个,可以通过多个mapper标签导入 -->
<mappers>
<mapper resource="/mapper.xml"/>
</mappers>
</configuration>
给mapper.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值应该保证唯一
在程序中通过[ namespace + id ]定位到要执行哪一条SQL语句
-->
<mapper namespace="EmpMapper">
<!-- 通过select、insert、update、delete标签声明要执行的SQL -->
<select id="findAll" resultType="com.yanan.pojo.User">
select * from emp
</select>
</mapper>
3.代码实现
3.1编写User实体类
注意:该实体类中的属性名必须和数据库中的字段名一致,否则无法封装进去。
创建User实体类,并提供get、set和重写toString()方法:
package com.yanan.pojo;
/**
* 实体类
* @author 慕客
*
*/
public class User {
//1.声明实体类中的属性
private Integer id;
private String name;
private String job;
private Double salary;
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 getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", job=" + job + ", salary=" + salary + "]";
}
}
3.2 编写实现类(MapperDaoTest)
编写findAll()方法:
/**
* 查询所有用户信息,返回一个List<User>
* @throws IOException
*/
@Test
public void findAll() throws IOException {
//1.读取mybatis的核心配置文件(mybatis-config.xml)
InputStream in = Resources
.getResourceAsStream("mybatis-config.xml");
//2.通过配置信息获取一个SqlSessionFactory工厂对象
SqlSessionFactory fac =
new SqlSessionFactoryBuilder().build( in );
//3.通过工厂获取一个SqlSession对象
SqlSession session = fac.openSession();
//4.通过namespace+id找到要执行的sql语句并执行sql语句
List<User> list = session
.selectList("EmpMapper.findAll");
//5.输出结果
for(User e : list) {
System.out.println( e );
}
}
3.3 结果展示
执行findAll方法,输出结果为:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。