MyBatis框架入门之增删改查

本文介绍了MyBatis框架的基本概念和重要性,详细阐述了如何使用MyBatis进行数据库操作,包括创建数据库、Java项目、实体类、接口类、映射配置文件以及核心配置文件的步骤。同时,通过示例展示了全查、新增、删除、单查和修改等基本操作的实现过程。

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

一、什么是框架:

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。另一种定义认为,框架是可被应用开发者定制的应用骨架

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

框架要解决的问题:

框架要解决的最重要的一个问题是技术整合的问题,在J2EE的 框架中,有着各种各样的技术,不同的软件企业需要从12EE 中洗择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦

这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响

框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层

2.3软件开发的分层重要性

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


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

MyBatis本是apache的一个开源项目Batis,2010年这个项目由apache software foundation 迁移到了googe code,并且改名为MyBatis。2013年11月迁移到Github。

iBATIS一词来源于"intemer和“abatis的组合,是一个基于Java的持久层框架。BATIS提供的持久层框架包括SQL Maps和DataAccess Objects (DAOs)

3.1什么是MyBatis?
MyBatis是一个开源轻量级的数据持久化框架,是JDBC和Hibernate的替代方案

mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注 sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。

mybatis 通过xml或注解的方式将要执行的各种statement 配置起来,并通过ava对象和statement 中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为iava对象并返回。

采用ORM 思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏了jdbc api底层访问细节,使我们不用与dbcapi打交道,就可以完成对数据库的持久化操作。

MBatis支持定制化SOL、存储过程以及高级映射,可以在实体类和SOL语句之间建立映射关系,是一种半自动化的ORM实现

MyBatis主要的目的就是简化IDBC操作,并且满足高并发和高响应的要求

二、使用mybatis

1.创建数据库

 2.创建一个Java项目

 创建module,创建一个lib文件夹导入mybatis框架所需要的jar包

 右击ass library 

 3.创建对应的实体类:

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

 4.创建针对表操作的接口类

在src中创建com.shi.dao包,然后创建UserDao的接口,然后在接口中定义针对数据库的增删该查等操作。

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

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

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

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

 7.在测试类中进行测试

抽取公共代码:

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

        builder=new SqlSessionFactoryBuilder();

        factory = builder.build(stream);

        sqlSession = factory.openSession();

        userDao = sqlSession.getMapper(UserDao.class);
    }

@After
    public void destory() throws IOException {
        sqlSession.commit();
        sqlSession.close();
        stream.close();
    }

全查:

运行结果

  新增一个小美女:@李文彬

@Test
public void testAdd() {
        
        //定义User对象,封装数据
        User user=new User();
        user.setUsername("李文彬");
        user.setPassword("666");
        user.setPhone("111");
        user.setAddress("开封西姜寨");

        int n=userDao.add(user);
        if (n>0){
            System.out.println("succss");
        }
    }

运行结果:新增成功啦 

删除: 

 

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

运行结果:

单查(根据数据库中的id查询) 


    /**
     * 根据id查询(单查)
     */
    @Test
    public  void selectById(){
        User user = userDao.selectById(1);
        System.out.println(user);

    }

运行结果:

修改:

 


       @Test
    public void update(){
        //数据库回显
        User olduser = userDao.selectById(10);
        System.out.println("修改前:"+olduser);
        //根据需要修改字段值
        olduser.setUsername("欧豪");
        olduser.setAddress("河南开封");
        //执行数据库
        userDao.update(olduser);
        //再次查询
        User newuser=  userDao.selectById(10);
        System.out.println("修改后"+newuser);

    }

 运行结果:

模糊查询: 

  @Test
    public void testSelectLike(){
        List<User> userList = userDao.selectLike("张");
        for(User user:userList){
            System.out.println(user);
        }
    }

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值