目录
工具:IDEA
目录结构:maven标准结构
时间:2023.2.12
##目录结构
##导入坐标
##创建mybatis-config.xml、jdbc.xml
##创建实体类
##创建映射文件 UserMapper.xml
###修改mybatix-congif.xml的配置
##创建测试类
###加载mybatis-config.xml配置文件
###获取SqlSessionFactory
###获取Sqlsession
###通过sqlsqssion对象执行UserMapper.xml文件的sql语句
###代码
import com.wj.dao.pojo.User;
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 org.apache.log4j.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @Description:
* @Author WJ
* @Date 2023/2/11:18:19
* @Version V1.0
**/
public class Pojo_Test {
private Logger logger = Logger.getLogger(Pojo_Test.class);
@Test
public void select_all() throws IOException {
SqlSession sqlSession = null;
String resource = "mybatis-congif.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = factory.openSession();
// User user = sqlSession.selectOne("com.wj.dao.mapper.UserMapper.selectId",1);
List<User> users = sqlSession.selectList("com.wj.dao.mapper.UserMapper.byname","张");
for (User user : users) {
//System.out.println((user.getUserName()));
logger.debug(user);
}
sqlSession.close();
}
}
1、请简述什么是 MyBatis?
参考答案:
MyBatis(前身是 iBatis)是一个支持普通 SQL 查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的 JDBC
代码和参数的手动设置以及对结果集的检索,并使用简单的 XML 或注解进行配置和原始映射,用以将接口和 Java 的 POJO
(Plain Old Java Object,普通 Java 对象)映射成数据库中的记录,使得 Java 开发人员可以使用面向对象的编程思想来操作数
据库。
2、请简述 MyBatis 的操作大致步骤。
参考答案:
1)读取配置文件。
2)根据配置文件构建 SqlSessionFactory。
3)通过 SqlSessionFactory 创建 SqlSession。
4)使用 SqlSession 对象操作数据库(包括查询、添加、修改、删除,以及提交事务等)。
5)关闭 SqlSession。
3、请简要介绍 MyBatis 的工作原理。
参考答案:
(1)读取 MyBatis 配置文件 mybatis-config.xml。
(2)由 MyBatis 配置文件加载映射文件 Mapper.xml。
(3)通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。
(4)由会话工厂创建 SqlSession 对象
(5)MyBatis 底层定义了一个 Executor 接口来操作数据库,它会根据 SqlSession 传递的参数动态的生成需要执行的 SQL
语句。
(6)在 Executor 接口的执行方法中,包含一个 MappedStatement 类型的参数,该参数是对映射信息的封装。
(7)在执行方法时,MappedStatement 对象会对用户执行 SQL 语句的输入参数进行定义封装。
(8)在数据库中执行完 SQL 语句后,MappedStatement 对象会对 SQL 执行输出的结果进行定义封装