Mybatis框架----->(1) 何为Mybatis框架、其主要解决jdbc编程的缺陷问题

本文详细介绍了Java Web开发中的三层架构,包括界面层、业务逻辑层和数据访问层的职责和对应包结构。接着,阐述了Mybatis作为持久层框架的角色,如何简化JDBC编程,以及解决了传统JDBC的痛点。Mybatis的主要功能是SQL映射和数据访问,通过XML或注解配置SQL,将数据库结果映射为Java对象。最后,总结了Mybatis的两大核心功能:sql映射和数据访问对象(DAOs)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、三层架构

1、三层架构对应的职责:
  1. 界面层(视图层):主要功能是接收用户请求数据,显示处理的结果
  2. 业务逻辑层:接收页面传过来的数据,计算业务逻辑,调用数据访问层获取数据。
  3. 数据访问层:与数据库打交道,主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。
2、三层对应的包:
  • 界面层:controller包(servlet)
  • 业务逻辑层:service包(XXXService类)
  • 数据访问层:dao包(XXXDao类)
3、三层之间的处理请求与交互关系:

用户<——>界面层<——>业务逻辑层<——>数据访问层(持久层)<——>数据库

4、三层对应的处理框架:
  • 界面层:servlet----springmvc框架
  • 业务逻辑层:serivce类----spring框架
  • 数据访问层:dao类----mybatis框架

二、何为Mybatis框架

1、Mybatis框架
  • 它是一种持久层框架,其内部封装了jdbc,程序员只需关注sql语句本身,而不需要处理加载驱动、创建连接、创建statement、关闭连接等过程。
  • Mybatis主要通过xml或者注解两种方式将要执行的sql语句配置起来,并通过实例对象和sql语句的动态参数进行映射生成最终的执行的sql语句,最终由Mybatis框架执行SQL语句并将结果映射为Java对象并返回。
2、jdbc编程
public void findStudent(){
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try {
        //注册MySQL驱动
        Class.forName("com.mysql.jdbc.Driver");
        //连接数据的基本信息
        String url = "jdbc:mysql://localhost:3306/test";
        String username="root";
        String password = "123456";
        //创建连接对象
        conn = DriverManager.getConnection(url, username, password);
        //保存查询结果
        List<Student> stuList = new ArrayList<>();
        //创建Statement,用来执行SQL语句
        st = conn.createStatement();
        //执行查询,创建记录集
        rs = st.executeQuery("select * from text ");
        while (rs.next()){
            Student stu = new Student();
            stu.setId(rs.getInt("id"));
            stu.setName(rs.getString("name"));
            //从数据库取出的数据转为Student对象,封装到List集合中
            stuList.add(stu);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            //关闭资源
            if (rs != null) ;{
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
3、使用jdbc编程的缺陷
  • 代码比较多,重复代码也比较多,开发效率低
  • 需要关注Connection,Statement,ResultSet对象的创建和销毁
  • 对ResultSet查询的结果转为对象,需要自己封装为List集合
  • 业务代码和操作数据库代码混合在一起
4、Mybatis主要解决的问题
  1. 注册数据库驱动,例如:
Class.forName("com.mysql.jdbc.Driver");
  1. 提供了创建Connection ,Statement, ResultSet的能力 ,不用开发人员创建这些对象了
  2. 从xml文件中获取sql并执行sql,把ResultSet结果转换为Java对象、List集合的能力
List<Student> list = new ArrayLsit<>(); 
ResultSet rs = state.executeQuery(“select * from student”); 
while(rs.next){ 
	Student student = new Student(); 
	student.setName(rs.getString(“name”)); 
	student.setAge(rs.getInt(“age”)); 
	list.add(student); 
}
  1. 提供了关闭资源的能力,不用你关闭Connection, Statement, ResultSet
  2. 开发人员:提供sql语句—>Mybatis处理sql—>开发人员得到List集合或者Java对象(表中的数据)
5、Mybatis的两大功能
  • (1) Sql mapper:sql映射:

可以把数据库表中的一行数据映射为一个Java对象。操作这个对象就相当操作表中的数据

  • (2) Data Access Objects(DAOs):数据访问

对数据库执行增删改查操作

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@烟雨倾城ゝ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值