Mybatis框架回顾(dao实现类和注解分别实现简单案例)

Mybatis框架回顾

在上篇博客中讲解了搭建Mybatis环境的几点注意事项,因为遵守3、4、5点,所以直接使用dao接口的代理对象来对数据库执行操作,我们直接通过xml配置文件配置即可,不需要再创建dao接口的实现类,其实使用实现类也可以完成,接下来就演示通过dao接口的实现类来完成对数据库的操作

既然使用实现类来完成对数据库的操作,那么就不需要使用代理对象来执行相应的方法了,

在这里插入图片描述

这是现在的目录结构,UserDaoImpl是UserDao接口的实现类,现在只需要对UserDaoImpl和MybatisTest进行修改即可

MybatisTest中获取接口UserDao接口的代理对象的代码就可以删除

UserDao mapper = sqlSession.getMapper(UserDao.class);

删除之后使用sqlSession对象来执行查询所有记录的方法,这个方法应该在UserDao接口的实现类中执行

可以在UserDaoImpl中获取在MybatisTest中创建的工厂,通过工厂获取sqlSession对象,让该对象执行查找所有记录的方法
在这里插入图片描述selectList方法可以执行相应的SQL语句并且将查询到的结果封装到一个集合中
在这里插入图片描述但是这个方法需要一个参数,就是要执行的SQL语句,需要对SQL语句进行定位,UserDaoImpl中的完整代码为

package com.qjz.dao.impl;

import com.qjz.dao.UserDao;
import com.qjz.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;


import java.util.List;

public class UserDaoImpl implements UserDao {

    private SqlSessionFactory factory;

    public UserDaoImpl(SqlSessionFactory factory){
        this.factory = factory;
    }
    public List<User> findAll() {
        SqlSession sqlSession = factory.openSession();

        List<User> list = sqlSession.selectList("com.qjz.dao.UserDao.findAll");

        return list;

    }
}

MybatisTest的内容为:

package com.qjz.test;

import com.qjz.dao.impl.UserDaoImpl;
import com.qjz.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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

public class MybatisTest {

    public static void main(String[] args) throws IOException {
        //加载文件
        InputStream in = Resources.getResourceAsStream("SqlMapperConfig.xml");

        //构建者模式创建工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);

        UserDaoImpl userDao = new UserDaoImpl(factory);

        List<User> all = userDao.findAll();
        for (User user : all) {
            System.out.println(user);
        }

       
        in.close();

    }
}

运行主方法
在这里插入图片描述查询成功

注解实现

处理上述讲解的通过接口的实现类来实现数据库中数据的查询,还可以使用注解来开发

使用注解直接在dao的接口上面添加注解就可以实现给接口创建代理

在接口的方法上添加注解

package com.qjz.dao;

import com.qjz.domain.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserDao {

    @Select("select * from stu")
    List<User> findAll();

}

通过注解提供了代理类在原接口的方法上加强的语句,可以直接删除UserDao.xml

此时项目的目录结构为
在这里插入图片描述
因为没有了UserDao.xml,就需要对主配置文件中的内容进行相应的修改

<mappers>
    <mapper class="com.qjz.dao.UserDao"/>
</mappers>

运行测试类中的主方法
在这里插入图片描述查询成功,以后可以使用注解来方便我们开发

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值