从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

    • Redis

    • Mybatis

      • Mybatis介绍
      • Mybatis入门案例
      • Mybatis入门案例-注解
      • Mybatis入门案例-实现类
        • 自定义实现类
        • 测试
        • 总结
      • Mybatis内部执行原理概述
      • 实现一个微型的Mybatis-配置文件版
      • 实现一个微型的Mybatis-注解版
      • Mybatis实现CRUD
      • Mybatis中传递对象参数
      • Mybatis中的列名和属性名的映射
      • Mybatis实现DAO层的开发
      • Mybatis实现类的执行过程-查询方法
      • properties标签的使用及细节
      • typeAliases标签和package标签
      • Mybatis连接池和事务
      • Mybatis与JNDI
      • Mybatis中的动态SQL
      • Mybatis多表查询
      • Mybatis中的多对多查询
      • Mybatis的延迟加载
      • Mybatis的缓存
      • Mybatis的注解开发-CRUD
      • Mybatis的注解开发-多表查询
      • Mybatis
    • Lucene

    • Elasticsearch

    • MQ

    • MyCat

    • Lombok

    • 主流框架
  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • 主流框架
  • Mybatis
2023-04-25
目录

Mybatis入门案例-实现类

# 30.Mybatis入门案例-实现类

我们之前说过,Mybatis可以创建代理对象,这样我们就不用写实现类了;但如果我们实在想自己实现实现类也是可以的。

‍

# 自定义实现类

新建一个实现类,新建findAll方法

package com.peterjxl.dao.impl;

import com.peterjxl.dao.IUserDao;
import com.peterjxl.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;

public class UserDaoImpl implements IUserDao {

    private SqlSessionFactory factory;

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

    @Override
    public List<User> findAll() {
       //1.使用工厂创建SqlSession对象
       SqlSession session = factory.openSession();

       //2.使用session执行查询所有方法
       List<User> users = session.selectList("com.peterjxl.dao.IUserDao.findAll");
       session.close();
    
       //3.返回查询结果
       return users;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

‍

这里我们在方法里使用Session对象查询数据库,其参数是接口类的全限定类名 + 方法名

‍

# 测试

修改测试类,增加一个新的测试方法:这里去掉了创建代理对象的语句,而是直接创建自定义实现类的对象

/**
 * 测试自定义实现类的情况下,查询数据库
 * @throws Exception
 */
@Test
public void helloMybatis2() throws Exception{
    // 1. 读取配置文件
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

    // 2. 创建SqlSessionFactory工厂
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(in);

    // 3. 使用工厂创建dao对象
    IUserDao userDao = new UserDaoImpl(factory);

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

    // 6. 释放资源
    in.close();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

‍

‍

# 总结

我们在实际开发中,都是代码越简便越好,所以不管使用XML还是注解配置,都是不写dao实现类的。但是要知道Mybatis它是支持写dao实现类的。

本文主要是演示通过全限定类名和方法名,才能定位到唯一一个SQL的作用。

本文所有代码已上传到了GitHub (opens new window)和Gitee (opens new window)上,并且创建了分支demo3,读者可以通过切换分支来查看本文的示例代码。

在GitHub上编辑此页 (opens new window)
上次更新: 2023/5/6 21:54:08
Mybatis入门案例-注解
Mybatis内部执行原理概述

← Mybatis入门案例-注解 Mybatis内部执行原理概述→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式