一. MyBatis简介
1. 什么是mybatis2. 什么是持久化 二. MyBatis开发步骤
1. 创建数据库2. IDEA中导入MyBatis所需jar包3. pojo层下编写实体类4. resources下编写MyBatis核心配置文件5. utils包下编写MyBatis工具类6. 在dao层下编写实体类的Mapper接口类7. 编写实体类对应的Mapper.xml配置文件
7.1 Mybatis的Dao(Mapper)层实现 8. 通过测试类进行测试9. 注意事项 三. MyBatis相应的API
1. SqlSessionFactoryBuilder(SqlSession工厂构建器)2. SqlSessionFactory(SqlSession工厂对象)3. SqlSession(会话对象)
一. MyBatis简介 1. 什么是mybatis
MyBatis 是一款优秀的持久层框架
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类映射成数据库中的记录。
MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。
Mybatis官方文档 : http://www.mybatis.org/mybatis-3/zh/index.html
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。
持久层:
完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】
说白了就是用来操作数据库存在的!
二. MyBatis开发步骤 1. 创建数据库CREATE DATAbase `mybatis`; USE `mybatis`; DROp TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(20) NOT NULL, `name` varchar(30) DEFAULT NULL, `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');2. IDEA中导入MyBatis所需jar包
3. pojo层下编写实体类org.mybatis mybatis 3.5.2 mysql mysql-connector-java 5.1.47
public class User {
private int id; //id
private String name; //姓名
private String pwd; //密码
//构造,有参,无参
//set/get
//toString()
}
4. resources下编写MyBatis核心配置文件
MyBatis核心配置文件层级关系
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8 username=root password=root
typeAliases给实体类起别名
在工具类中获得resources包下的mybatis核心配置文件,进而获取SqlSession连接
package com.pudding.utils;
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 java.io.IOException;
import java.io.InputStream;
//SqlSessionFactory --> SqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用mybatis第一步:获取SqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例
//SqlSession 提供了在数据库执行 SQL 命令所需的所有方法
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
6. 在dao层下编写实体类的Mapper接口类
package com.pudding.dao;
import com.pudding.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查询所有用户
List getUserList();
//根据ID查询用户
User getUserById(int id);
User getUserById(Map map);
//insert一个用户
int addUser(User user);
//万能的Map
int addUser2(Map map);
//修改用户
int updateUser(User user);
//根据id删除用户
int deleteUser(int id);
}
7. 编写实体类对应的Mapper.xml配置文件
mybatis映射文件概述
7.1 Mybatis的Dao(Mapper)层实现
package com.pudding.dao;
import com.pudding.pojo.User;
import com.pudding.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserMapperTest {
@Test
public void testfindAll(){
//第一步:获得SQLSession对象
SqlSession sqlSession = MybatisUtils.getSession();
//方式一:getMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List userList = userMapper.getUserList();
for(User user : userList){
System.out.println(user);
}
sqlSession.close();
}
@Test
public void tsetSelectUserById() {
SqlSession session = MybatisUtils.getSession(); //获取SqlSession连接
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
session.close();
}
//增删改需要提交事务
@Test
public void testAddUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(4,"王五","zxcvbn");
int i = mapper.addUser(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
@Test
public void testUpdateUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.updateUser(new User(4, "哈哈", "123123"));
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
@Test
public void testDeleteUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int i = mapper.deleteUser(4);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
}
9. 注意事项
Maven中的build下要配置静态资源过滤问题
三. MyBatis相应的API 1. SqlSessionFactoryBuilder(SqlSession工厂构建器) 2. SqlSessionFactory(SqlSession工厂对象) 3. SqlSession(会话对象)Mybatis-Study com.pudding 1.0-SNAPSHOT 4.0.0 mybatis-01 src/main/java ***.xml false src/main/resources ***.xml false



