MyBatis是什么?
MyBatis是一个基于Java的持久层框架,内部封装了JDBC操作的细节,使开发者 只需要关注SQL语句本身,而不需要去处理加载驱动、创建连接、创建 statement 等繁杂的过程
MyBatis通过xml或注解方式将要执行的各种statement配置起来,并通过Java 对象和statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由 MyBatis框架执行SQL并将结果映射为 Java 对象后返回
采用ORM思想解决了实体和数据库映射的问题,对JDBC进行了封装,屏蔽了 JDBC API底层访问细节,使我们不用和JDBC API打交道,就可以完成对数据库 的持久化操作Mybatis框架理论
ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术, 它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据
总之就是使用了一种映射机制,使我们可以直接在java中操作数据库,并对数据库中的数据做出一些操作。
怎样配置MyBaties?
第一步,在maven工程中配置依赖。
为什么要配置这些依赖?他们分别有什么作用?
- mysql-connector-java:这是MySQL的JDBC驱动程序,用于连接Java应用程序与MySQL数据库,允许执行SQL查询。
- junit:这是一个广泛使用的单元测试框架,用于编写和运行测试,以确保代码的正确性和稳定性。
- mybatis:这是一个持久层框架,简化了数据库操作,允许将SQL语句和Java对象之间的映射进行管理,提高开发效率。
第二步,配置MyBatis三个基本要素
(1)核心对象和类
(2)MyBatis核心配置文件(mybatis-config.xml)
(3)SQL映射文件(mapper.xml)
在这里我们只有配置好MyBatis核心配置文件(mybatis-config.xml)然后才可以配置SQL映射文件(mapper.xml)以及其对应的接口类,最后才可以使用核心对象和类。
配置MyBatis核心配置文件(mybatis-config.xml)
文件目录:
文件内容:
在这里注意自己连接的数据库用户名和密码。
文件目录:
文件内容:
核心配置文件解析
properties(数据库连接属性)
<properties resource="db.properties"/>
<property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
typeAlias
typeAlias(类型别名)
• Mybatis中有支持的默认别名,也可以自定义别名
• 配置指定实体类的别名
<typeAliases>
<typeAlias type= "com.xyu.po.Poem" alias= "poem"/>
typeAliases>
Mybatis核心配置typeAlias(类型别名)
• Mybatis中有支持的默认别名,也可以自定义别名
• 批量配置别名
<typeAliases>
<package name= "com.xyu.po"/> <package name= "xxx继续指定其他要注册别名的包"/>
typeAliases>
mappers(映射器)
• 在MyBatis主配置文件中,使用mappers标签配置一组映射器,mapper标签指定一个配置器:
<mapper resource="mapper/PoemMapper.xml"/>
• class加载方式 • 适用于类路径下,接口文件与映射文件在同一路径下,且接口名与映射文件名相同,且映射文件命名为接口全类 名的情况
<mapper class="com.xyu.mapper.PoemMapper"/>
• 可以使用package标签来注册指定包下的所有 mapper 接口
<package name="com.iflytek.iampoet.mapper"/>
配置SQL映射文件(mapper.xml)以及其对应的接口类和实体类
首先,创建对应的实体类
文件目录:
文件内容:
其次,创建接口类: 文件目录:
文件内容:
最后创建xml文件:
文件目录:
文件内容:
- SQL映射文件(mapper.xml) :用于定义SQL语句和数据库操作映射。它将SQL语句与接口方法关联,提供数据的增删改查功能。
- 接口类:定义了数据访问的方法。这些方法与映射文件中的SQL语句一一对应,允许应用程序调用这些方法执行数据库操作。
- 实体类:用于映射数据库中的表结构。每个实体类通常代表一个数据库表,包含表中的字段作为类的属性,方便在Java代码中处理数据。
使用核心的对象和类
package xyu.com;
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 xyu.com.po.Poem;
import xyu.com.mapper.PoemMapper;
import java.io.IOException;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory=null;
SqlSession sqlSession=null;
InputStream inputStream=null;
try {
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
throw new RuntimeException(e);
}
//创建sqlsessionfactorybuilder
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//创建sqlsessionfactory对象
sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
//创建sqlsession对象
sqlSession = sqlSessionFactory.openSession();
//sqlsession通过代理获取PoemMapper代理对象
PoemMapper poemMapper = sqlSession.getMapper(PoemMapper.class);
//poemMapper调用查询方法,本质是
Poem poem = poemMapper.queryPoemById(26L);
System.out.println(poem);
}
}
欧克欧克,报错了,不知道哪里出错。。。。。。。。。
main函数--》接口----》PoemMapper.xml--》》mybatis-config.xml--》》db.properties