一、Mybatis简介
MyBatis 源于 Apache 的一个开源项目 iBatis,而 iBatis 一词则来源于“internet”和“abatis”的组合,2010年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为MyBatis ,2013年11月其又迁移到 Github。MyBatis 是一个基于 Java 的支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,相比于基于面向对象使用 HQL 语言的 Hibernate 框架,MyBatis 则基于 SQL 面向结果集,因此其效率更高。
官方文档:https://mybatis.org/mybatis-3/zh/index.html
Mybatis就是对于JDBC的封装!!!
二、开发步骤(仅以select * 为例)
1、导包:https://mvnrepository.com/artifact/org.mybatis/mybatis
以3.5.4版本为例,
mybatis-3.5.4.jar
mysql-connector-java-8.0.19.jar
2.编写实体类:
a、mybatis在操作数据库时,表的字段名最好与pojo类的属性名保持一致,因为mybatis默认采用的是自动映射,通过过去字段的名字得到对应的值,然后再通过反射到类里面寻找名字相同的属性名,调用对应的setter方法将数据赋值给属性
b、如果字段名与属性名不一致可以通过sql语句给查询的字段取别名,但是别名必须与对应的属性名一致
public class User { private int id; //id private String account; //账号 private String password; //密码 }
3.创建mybatis-config.xml配置文件
注意:该xml文件应该放在src文件下
该配置文件用于存放数据库连接相关数据
<?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.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC" /> <property name="username" value=用户名 /> <property name="password" value=密码 /> </dataSource> </environment> </environments> <mappers> <!--esource="存放sql语句的xml详细地址"--> <mapper resource="com/swpu/mapper/UsersMapper.xml"/> </mappers> </configuration>
4.创建UsersMapper.xml文件
注意:新建mapper包,并将UsersMapper.xml放在mapper文件下
<?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:命名空间,作用与包名一样 用来区分相同id的sql--> <mapper namespace="abc"> <!-- id 为sql的唯一标识,同一个命名空间下不能有id相同的sql(自己定义) resultType:将查询出来的数据封装成什么类型的对象(存放src以下完整的类名) --> <select id="allUsers" resultType="com.swpu.entity.User"> select * from mall_user </select> </mapper>
5.创建测试类
public class MybatisTest { public static void main(String[] args) throws IOException { //自动到src下找配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); //创建工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); //创建session:底层就是利用statement对象来操作数据库 SqlSession session =factory.openSession(); //直接利用session来执行sql进行查询 List<User> selectList = session.selectList("abc.findall"); //遍历 selectList.forEach(e->System.out.println(e.toString())); //关闭statement connection session.close(); } }
mybatis执行逻辑
a:首先通过输入流读取mybatis.xml与mapper.xml文件中的配置信息
b:创建session,一个session就是一次会话
c:通过selectList方法中的参数找到对应的sql语句,同时创建一个statement去查询数据库
d:查询时会得到一个ResultSet,mybatis框架根据反射自动的将得到的数据封装成pojo类对象
e:如果是selectList方法,则会自动将这些对象封装成List对象并返回
6.执行结果: