• Mybatis快速入门


    • 目录

      框架介绍

      ORM介绍

      原始JDBC的操作问题分析

      原始JDBC的操作问题解决方案

      Mybatis介绍

      Mybatis入门程序实现步骤

      数据准备

      映射配置文件

      核心配置文件

      实例测试


    • 框架介绍

    • 框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求
    • ORM介绍

    • ORM(Object Relational Mapping)
    • 对象关系映射
    • 指的是持久化数据和实体对象的映射模式
    • 为了解决面向对象与关系型数据库存在的互不匹配的现象的技术
    • 那具体是什么意思呢
    • 例如说现在有一个数据库
    • 这个数据库中有很多的数据表
    • 例如说student表和teacher表
    • 那么这些数据表中的数据我们要进行存储的话
    • 在Java中就要求有对应的类来进行体现
    • 比如说student类或teacher类
    • 可以把数据库当中的数据读取出来封装到实体对象当中
    • 反过来,也可以把实体对象当中的数据再保存到数据库当中
    • 这样的操作对应的就是我们说的ORM
    • 映射的规则
    • 数据表->类
    • 表字段->类属性
    • 表数据->对象
    • 原始JDBC的操作问题分析

    • 1.频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能
    • 2.sql语句在代码中硬编码,如果要修改sql语句,就需要修改Java代码,造成代码不易维护
    • 3.查询操作时,需要手动将结果集中的数据封装到实体对象中
    • 4.增删改查操作需要参数时,需要手动将实体对象的数据设置到sql语句的占位符
    • 原始JDBC的操作问题解决方案

    • 1.使用数据库连接池初始化连接资源
    • 2.将sql语句抽取到配置文件中
    • 3.使用反射,内省等底层技术,将实体与表进行属性与字段的自动映射
    • Mybatis介绍

    • 1.Mybatis是一个优秀的基于Java的持久化框架
    • 它内部封装了JDBC,使开发者只需要关注SQL语句本身
    • 而不需要花费精力去处理加载驱动,创建连接,创建执行者等复杂的操作
    • 2.Mybatis通过xml或注解的方式将要执行的各种Statement配置起来
    • 并通过Java对象和Statement中SQL的动态参数进行映射生成最终要执行的SQL语句
    • 3.最后Mybatis框架执行完SQL并将结果映射为Java对象并返回
    • 采用ORM思想解决了实体和数据库映射的问题
    • 对JDBC进行了封装,屏蔽了JDBC API底层访问细节,使我们不用与JDBC API打交道,就可以完成对数据库的持久化操作
    • Mybatis入门程序实现步骤

    • 1.导入jar包
    • 2.在src下创建并编写映射配置文件
    • 3.在src下创建并编写核心配置文件
    • 4.使用相应的API来完成编码
    • 数据准备

      1. package demo1.bean;
      2. public class Student {
      3. private Integer id;
      4. private String name;
      5. private Integer age;
      6. public Student() {
      7. }
      8. public Student(Integer id, String name, Integer age) {
      9. this.id = id;
      10. this.name = name;
      11. this.age = age;
      12. }
      13. @Override
      14. public String toString() {
      15. return "Student{" +
      16. "id=" + id +
      17. ", name='" + name + '\'' +
      18. ", age=" + age +
      19. '}';
      20. }
      21. public Integer getId() {
      22. return id;
      23. }
      24. public void setId(Integer id) {
      25. this.id = id;
      26. }
      27. public String getName() {
      28. return name;
      29. }
      30. public void setName(String name) {
      31. this.name = name;
      32. }
      33. public Integer getAge() {
      34. return age;
      35. }
      36. public void setAge(Integer age) {
      37. this.age = age;
      38. }
      39. }
    • 映射配置文件

      1. mapper
      2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      4. <mapper namespace="StudentMapper">
      5. <select id="selectAll" resultType="demo1.bean.Student">
      6. SELECT * FROM student
      7. select>
      8. mapper>
    • 核心配置文件

      1. configuration
      2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
      4. <configuration>
      5. <environments default="tj1">
      6. <environment id="tj1">
      7. <transactionManager type="JDBC"/>
      8. <dataSource type="POOLED">
      9. <property name="driver" value="com.mysql.jdbc.Driver"/>
      10. <property name="url" value="jdbc:mysql://localhost:3306/dp1"/>
      11. <property name="username" value="root"/>
      12. <property name="password" value="109923"/>
      13. dataSource>
      14. environment>
      15. environments>
      16. <mappers>
      17. <mapper resource="StudentMapper.xml"/>
      18. mappers>
      19. configuration>
    • 实例测试

      1. package demo1.dao;
      2. import demo1.bean.Student;
      3. import org.apache.ibatis.io.Resources;
      4. import org.apache.ibatis.session.*;
      5. import org.junit.Test;
      6. import java.io.InputStream;
      7. import java.util.List;
      8. public class StudentTest1 {
      9. @Test
      10. public void selectAll() throws Exception{
      11. //1.加载核心配置文件
      12. InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
      13. //2.获取SqlSession工厂对象
      14. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
      15. //3.通过SqlSession工厂对象获取SqlSession对象
      16. SqlSession sqlSession = sqlSessionFactory.openSession();
      17. //4.执行映射配置文件中的sql语句,并接收结果
      18. List list = sqlSession.selectList("StudentMapper.selectAll");
      19. //5.处理结果
      20. for(Student stu : list){
      21. System.out.println(stu);
      22. }
      23. //6.释放资源
      24. sqlSession.close();
      25. is.close();
      26. }
      27. }
  • 相关阅读:
    CSS3_字体图标
    建设一个互联网医院系统要花多少钱?
    多输入多输出 | MATLAB实现PSO-BP粒子群优化BP神经网络多输入多输出
    技术驱动创新:淘宝扭蛋机小程序的技术实现与挑战
    Python每日一练(牛客数据分析篇新题库)——第32天:中位函数
    Docker部署clickhouse
    第二章计算机网络参考模型
    Elasticsearch(016):es常见的字段映射类型之对象类型(object)
    手把手带你学SQL—牛客网SQL 统计复旦用户8月练题情况
    react源码分析:babel如何解析jsx
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126069638