框架(Mybatis框架)

本文介绍了框架的概念,如MyBatis、SpringMVC和Spring在软件开发中的角色。MyBatis用于数据访问,SpringMVC处理Web交互,Spring作为粘合剂解耦各层。通过一个MyBatis入门案例,展示了创建数据库、Java项目、实体类、DAO接口、mapper配置以及测试的过程,强调了框架在实现分层和提高开发效率中的重要性。

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

什么是框架

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;

另一种定义认为,框架是可被应用开发者定制的应用骨架。

前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

软件开发的分层重要性

框架的重要性在于它实现了部分功能,并且能够很好的将底层应用平台和高层业务逻辑进行了缓和。为了实现软件工程中的”高内聚,低耦合“。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常见的MVC软件设计思想就是很好的分层思想。

分层开发下的常见框架

  1. 解决数据的持久化问题的框架

MyBatis

框架职责:作用在dao层,负责数据访问的框架

  1. 解决WEB层问题的MVC框架

spting MVC

框架职责:作用在web层,负责和客户端交互的框架。

  1. 解决技术整合问题的框架

spring框架

框架职责:不是作用在某一层,而是实现web层、Service层、Dao层之间解耦的框架,是三层之间的粘合剂

Mybatis入门案例

  1. 创建测试的数据库

#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;
#创建表
create table t_user
(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
insert into t_user(username,password,phone,address) values('张
三','666','18965423548','南阳');
insert into t_user(username,password,phone,address) values('李
四','333','18754263548','许昌');
insert into t_user(username,password,phone,address) values('小
美','123','18565234759','信阳');
select * from t_user;
  1. 创建一个Java项目并导入mybatis框架的jar包

在项目中创建一个lib文件夹放入mybatis框架的jar包,并导入项目中。

  1. 创建跟表对应的实体类

在src中创建com.chen.bean包,然后创建User实体类。

package com.kong.bean;

public class User {
    private Integer uid;
    private String username;
    private String password;
    private String phone;
    private String address;

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
  1. 创建针对表操作的接口类

在src中创建com.chen.dao包,然后创建UserDao的接口,然后在接口中定义针对数据库的增删

改查等操作。

  1. 在接口的包中创建对应的mapper映射配置文件

在dao接口的同目录下创建跟接口名字一样的配置文件

  1. 在src目录中创建mybatis框架的核心配置文件

在src中创建一个文件,命名为SqlMapConfig.xml,在该配置文件中配置连接数据库的参数

  1. 在测试类中进行测试

import com.kong.bean.User;
import com.kong.dao.UserDao;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class UserTest {
    InputStream stream=null;
    SqlSessionFactoryBuilder builder=null;
    SqlSessionFactory factory=null;
    SqlSession sqlSession=null;
    UserDao userDao=null;

    @Before
    public void a() throws IOException{
        //1.加载核心配置文件的字节输入流
        stream= Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
        builder=new SqlSessionFactoryBuilder();
        //3.通过构建对象加载配置文件的输入流获取SqlSessionGactory
        factory=builder.build(stream);
        //4.通过工厂对象获取SqlSession对象---执行JDBC操作的
        sqlSession=factory.openSession();
        //5.通过SqlSession对象获取接口对应的代理对象
        userDao=sqlSession.getMapper(UserDao.class);
    }

    @Test
    public void testSelectAll(){
        //6.通过代理对象执行查询方法
        List<User> userList=userDao.selectAll();
        //7.遍历集合
        for(User user : userList){
            System.out.println(user);
        }
    }

    @Test
    public void testAdd() throws IOException{
        a();
        User user=new User();
        user.setUsername("mybatis");
        user.setPassword("333");
        user.setPhone("111");
        user.setAddress("github");
        int n=userDao.add(user);
        if(n>0){
            System.out.println("success");
        }
    }

    @Test
    public void testDelete() {
        int n=userDao.delete(1);
        if(n>0){
            System.out.println("delete success");
        }
    }

    @Test
    public void testUpdate(){
        //1.数据库回显
        User oldUser=userDao.selectByUid(5);
        System.out.println("修改前:"+oldUser);
        //2.根据需要修改字段值
        oldUser.setUsername("修改测试");
        oldUser.setAddress("河南郑州");
        //3.执行数据库更新
        userDao.update(oldUser);
        //4.再次查询
        User newUser=userDao.selectByUid(5);
        System.out.println("修改后:"+newUser);
    }

    @Test
    public void testSelectByuid(){
        User user=userDao.selectByUid(1);
        System.out.println(user);
    }

    @After
    public void distory() throws IOException{
        //增删改是数据库慎重的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会真正更新到数据库中
        sqlSession.commit();
        sqlSession.close();
        stream.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值