当前位置: 首页 > news >正文

Java - MyBatis(上)

Mybatis(上)

简介

Mybatis是一款优秀的持久层框架。
Mybatis支持定制化SQL、存储过程以及高级映射。
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

持久化

持久化就是将程序的数据在持久状态和瞬时状态转化的过程 内存因为断电即失的特点,而有一些对象,不能让它丢掉,所以需要持久化。内存又太贵了,不能将数据持久放在内存中。

持久层

完成持久化工作的代码块

第一个Mybatis程序实现 (思路大纲)

使用Mybatis对数据库进行操作

1.配置环境

导入依赖:

首先需要导入Mybatis依赖和Mysql依赖,才能使用Mybatis和连接Mysql。
之后需要一个sqlSession对象,这需要写一个Mybaits工具类来返回一个sqlSession对象。

Mybatis工具类:

这个Mybatis工具类的实现,是为了返回一个sqlSession对象,需要一个sqlSessionFactory;
而一个sqlSessionFactory对象需要通过 SqlSessionFactoryBuilder 获得;
而 SqlSessionFactoryBuilder 则可以从 XML 配置文件进行加载。

Mybatis核心配置文件:

这样我们就需要一个Mybatis的核心配置文件XML。
这个XML文件需要进行事务管理和数据库连接配置,同时还需要要包含一组映射器(mapper),这些映射器的 XML文件包含了 SQL 代码和映射定义信息。

环境配置完毕!!!

2.编写代码

实体类:

之后就是编写代码, 创建一个与数据库表对应的实体类。
比如针对数据库查询select,首先写一个实体类,内容是包括select的表的各个字段的信息。

Mapper接口

之后写一个Mapper映射接口,自定义的,里面写一个方法用来返回结果集的。
不过每个Mapper接口都需要注册,就是在上述的Mybatis中注册,才能使用。

对应的XML文件

之后通过写一个配置文件,在配置文件中写SQL的相关操作,对接Mapper接口,用来返回结果集。
MyBatis 会根据 Mapper 接口方法的返回类型自动将查询结果映射到相应的 Java 对象。

2.测试

使用MyBatis

获取 sqlSesion对象,通过MyBatis工具类返回一个sqlSession对象;
使用SqlSession获取Mapper接口的实例;
通过该实例方法的调用,执行相关操作,获取结果集;
关闭SQL Session。

第一个Mybatis程序实现 (代码实现)

配置环境:
  1. 导入依赖,解决 Maven 配置文件未被导出或生效的问题(build)

    <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.16</version></dependency></dependencies>
<!--在子部写--><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
  1. 编写Mybatis工具类,并配置Mybatis核心xml文件,mapper映射器可以候补!

public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {throw new RuntimeException(e);}}public static SqlSession getSqlSession() {return sqlSessionFactory.openSession();}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="111111"/></dataSource></environment></environments><mappers><mapper resource="org/example/Dao/UserMapper.xml"/></mappers>
</configuration>
编写代码
  1. 编写一个实体类,与数据库的表相对应。

//实体类
public class User {private int id;private String name;private String pwd;public User() {}public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';}
}
  1. 创建一个mapper接口,在里面编写一个方法,用来返回结果集。

public interface UserDao {public List<User> getUserList();
}
  1. 配置一个与mapper接口对应的xml文件,对应接口、返回类型,在相应标签内写SQL语句即可。
    MyBatis 会根据 Mapper 接口方法的返回类型自动将查询结果映射到相应的 Java 对象。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.Dao.UserDao"><select id="getUserList" resultType="org.example.pojo.User">select * from mybatis.user</select>
</mapper>

测试

  1. 创建一个sqlSession对象,用Mybatis工具类返回值对象值。

  2. 通过sqlSession对象的getMapper()方法,获取一个Mapper接口的实例对象。这样通过动态代理获取了 Mapper 接口的实现,以便于进行数据库操作。

  3. 调用这个实例对象的方法,这个方法调用会触发 MyBatis 执行与 getUserList() 相关联的 SQL 语句。
    执行后,会将结果集通过返回类型映射成一个Java对象,如List<表对应的对象>,返回结果。

  4. 关闭sqlSession,释放资源。

public class testDao {@Testpublic void test() {//获得SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//方式一执行SQLUserDao mapper = sqlSession.getMapper(UserDao.class);List<User> userList = mapper.getUserList();for (User user : userList) {System.out.println(user);}//关闭sqlSessionsqlSession.close();}
}

总结

使用Mybatis对数据库进行操作

配置环境:
  1. 导入依赖,解决解决 Maven 配置文件未被导出或生效的问题(builder)

  2. 编写Mybatis工具类,并配置Mybatis核心xml文件,mapper映射器可以候补!

编写代码
  1. 编写一个实体类,与数据库的表相对应。

  2. 创建一个mapper接口,在里面编写一个方法,用来返回结果集。

  3. 配置一个与mapper接口对应的xml文件,对应接口、返回类型,在相应标签内写SQL语句即可。
    MyBatis 会根据 Mapper 接口方法的返回类型自动将查询结果映射到相应的 Java 对象。

测试
  1. 创建一个sqlSession对象,用Mybatis工具类返回值对象值。

  2. 通过sqlSession对象的getMapper()方法,获取一个Mapper接口的实例对象。这样通过动态代理获取了 Mapper 接口的实现,以便于进行数据库操作。

  3. 调用这个实例对象的方法,这个方法调用会触发 MyBatis 执行与 getUserList() 相关联的 SQL 语句。
    执行后,会将结果集通过返回类型映射成一个Java对象,如List<表对应的对象>,返回结果。

  4. 关闭sqlSession,释放资源。


http://www.mrgr.cn/news/43359.html

相关文章:

  • ffmpeg源码分析(七)结构体之AVStream
  • VikParuchuri/marker 学习简单总结
  • STL06——手写一个简单版本的set
  • C++ 语言特性30 - 模板介绍
  • leetcode42:接雨水
  • 汇编DEBUG程序调用
  • [ESP32]ESP-IDF使用组件添加U8g2图形库
  • 3dsMax合并FBX的时候相同的节点会被合并(重命名解决),3Ds MAX创建空物体(虚拟对象或者点)
  • 一文秒懂鸿蒙Harmony-Next状态管理
  • 【AI知识点】正态分布(高斯分布)和中心极限定理(CLT)
  • InnoDB 中的索引页与数据行的关联详解
  • 封装el-upload组件,用于上传图片和视频
  • 镜头、diffuser、DOE
  • Leecode热题100-295.数据流中的中位数
  • U3D游戏开发之场景解锁小系统(UGUI版)
  • MySQL基础之约束
  • Android2024.2.1升级错误
  • 表达式求值(可以计算两位数以上)
  • 【云原生】云原生架构的反模式
  • dll动态库加载失败导致程序启动报错以及dll库加载失败的常见原因分析与总结