MyBatis----Mybatis传统 DAO 层开发

本文介绍了如何在MyBatis中不使用动态代理,而是自定义DAO实现类进行数据库操作,包括查询、保存、更新、删除等基本操作。通过创建DAO实现类并手动编写SQL执行方法,展示了在没有MyBatis简化代码的情况下,如何进行数据库CRUD操作。同时,文章对比了自定义实现与使用代理DAO的区别,强调在实际开发中通常更倾向于使用代理方式。
摘要由CSDN通过智能技术生成

上一篇👉:MyBatis----Mybatis的参数、返回值深入



🚴大家好!我是近视的脚踏实地,后边这系列主要是记录自己MyBatis的学习笔记,这篇文章主要来学习mybatis传统的DAO层开发,这部分了解即可
     唯有行动  才能解除你所有的不安

1、编写dao实现类的使用-查询列表

我们学习了使用代理dao的方式,那么接下来如果不使用代理dao,也就是自己写实现类,该如何进行开发

那么首先一个新的 maven工程,把之前的src下的源码都复制过来,以及pom文件的坐标,那么接着要先进行简单的改造,把QueryVo类删掉,因为不需要使用了,然后对应地把userdao接口中的关于QueryVo的方法删掉,然后映射配置里边,resultMap里边的内容我们并不需要,我们只需要实体类和数据库字段名一样就可以了,因为这里我们主要是为了学习自己写dao的方式,接着把对应的resultMap属性都改回成resultType。那么因为平时开发用的比较多的就是使用代理dao接口的方式,所以此篇的学习对于我们来说都是一个了解的知识点。

接着我们前边进行的实体类和我们的数据库列对不上的这些操作,我们重新把它对上,改回来,然后User实体类中的属性名称也都改回来,改成和数据库字段一样的名称,重新生成get和set方法。

那么准备工作做好后,就可以开始写一个dao的实现类

package monster.zf.dao.impl;

import monster.zf.dao.UserDao;
import monster.zf.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

/**
 * @author Monster丶ZF
 * @version 1.8
 * @remakeTodo
 * @Package monster.zf.dao.impl
 * @date 2020/11/10 14:43
 */
public class UserDaoImpl implements UserDao {

    private SqlSessionFactory  factory;
    private UserDaoImpl(SqlSessionFactory  factory){
        this.factory = factory;
    }

    /**
     *  查询所有
     * @return
     */
    public List<User> findAll() {
        //1.根据factory获取SqlSession对象
        SqlSession session = factory.openSession();
        //2.调用SqlSession中的方法,实现列表查询
        //此处写的参数是能获取配置信息的key,也就是配置文件中的namespace属性的值加上方法名称
        List<User> users = session.selectList("monster.zf.dao.UserDao.findAll");
        //3.释放资源
        session.close();
        return users;
    }

    public void saveUser(User user) {

    }

    public void updateUser(User user) {

    }

    public void deleteUser(Integer userId) {

    }

    public User findById(Integer userid) {
        return null;
    }

    public List<User> findByName(String username) {
        return null;
    }

    public int findTotal() {
        return 0;
    }
}

接下来就去测试类中测试一下这个方法,那么测试类也要相应改造一下

package monster.zf;

import monster.zf.dao.UserDao;
import monster.zf.dao.impl.UserDaoImpl;
import monster.zf.domain.User;
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.InputStream;
import java.util.Date;
import java.util.List;

/**
 * @author Monster丶ZF
 * @version 1.8
 * @remakeTodo  测试类
 * @Package monster.zf
 * @date 2020/11/9 11:26
 */
public class MybatisTest {

    private InputStream in;
    private UserDao userDao;

    @Before
    public void init() throws Exception {
        //1.读取配置文件
        in = Resources.getResourceAsStream("sqlMapConfig.xml");
        //2.创建sqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂对象,创建dao对象
        userDao = new UserDaoImpl(factory);


    }


    @After
    public void destroy() throws Exception {

        //6.释放资源

        in.close();

    }


    /**
     * 查询所有
     *
     * @throws Exception
     */
    @Test
    public void testFindAll() {

        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }

    }


    }

接着运行这个查询所有的方法👇:
在这里插入图片描述
那么可以发现,查询所有这个功能依然可用,不过这个可用和之前代理dao就有点不一样了,原因是现在我们自己写着dao实现类,无形中会多很多代码,而这些代码其实mybatis都给我们实现了,所以从这点来说,其实从实际的开发来说,我们根本就不需要自己来写代码 ,而是直接创建一个代理dao对象接口了

2、编写dao实现类的使用-保存操作

那么同样的道理,在自己写的dao实现类中手动实现保存的操作
在这里插入图片描述
接着到测试类中进行测试
在这里插入图片描述
运行结果👇:
在这里插入图片描述
在这里插入图片描述

3、编写dao实现类的使用-修改删除等其他操作

接着来实现更新的操作,也是先把dao实现类中的代码写好,其实都是一样的,只需要把调用的方法改一下就可以👇:
在这里插入图片描述
接着到测试类中测试👇:
在这里插入图片描述

运行结果👇:
在这里插入图片描述
接着是删除也是一样,先在dao实现类把代码写好👇:
在这里插入图片描述
接着去测试👇:
在这里插入图片描述
运行结果👇:
在这里插入图片描述
接着是查询一个的操作,同样先在dao实现类中写好代码👇:
在这里插入图片描述
接着去测试类进行测试👇:
在这里插入图片描述
运行结果👇:
在这里插入图片描述
接着是模糊查询,同理先在dao实现类写好代码👇:
在这里插入图片描述

接着去测试类进行测试👇:
在这里插入图片描述
运行结果👇:
在这里插入图片描述
接着是查询总记录数,同理先在dao实现类写好代码👇:
在这里插入图片描述
接着去测试类进行测试👇:
在这里插入图片描述
运行结果👇:
在这里插入图片描述


下一篇👉MyBatis---- SqlMapConfig.xml配置文件

本篇博客到这就完啦,非常感谢您的阅读🙏,那么下一篇将会学习一些配置开发,如果对您有帮助,可以帮忙点个赞或者来波关注鼓励一下喔😬

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值