MyBatis的Dao层实现

Mybatis中编写dao层实现类 User的实现类 public class IUserDaoImpl implements IUserDao { private SqlSessionFactory factory; public IUserDaoImpl() { } public IUserDaoImpl(SqlSessionFactory factory) { this.fa... 阅读详情

1.传统开发方式

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.29</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.9</version>
    </dependency>
</dependencies>
public interface UserDao{
    List<User> findAll();
}
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.caoyan.dao.UserMapper;
import com.caoyan.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;

public class UserMapperImpl implements UserMapper {

    @Override
    public List<User> findAll() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sessionFactory.openSession();
        List<User> userList = sqlSession.selectList("userMapper.findAll");
        return userList;
    }

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

import com.caoyan.dao.UserMapper;
import com.caoyan.dao.impl.UserMapperImpl;
import com.caoyan.domain.User;

public class ServiceDemo {
    public static void main(String[] args) throws IOException {
        // 创建dao层对象当前dao层实现是手动编写的
        UserMapper userMapper = new UserMapperImpl();
        List<User> all = userMapper.findAll();
        System.out.println(all);
    }
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper">
    <!-- 查询操作 -->
    <select id="findAll" resultType="user">
        select * from user
    </select>
</mapper>

2.代理开发方式

采用MyBatis的代理开发方式实现DAO层的开发,这种方式使我们后面进入企业的主流。

Mapper接口开发方式方法只需要程序员编写mapper接口(相当于Dao接口),由MyBatis框架根据接口定义创建接口的动态代理对象,代理对象的方法同上边Dao接口实现类方法。

Mapper接口开发需要遵循以下规范:

  • Mapper.xml文件的namespace与mapper接口的全限定名相同

  • Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
  • Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
  • Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.caoyan.dao.UserMapper">
    <!-- 查询操作 -->
    <select id="findAll" resultType="user">
        select * from user
    </select>
    <!-- 根据id查询 -->
    <select id="findById" parameterType="int" resultType="user">
        select * from user where id = #{id}
    </select>
</mapper>
public interface UserMapper {
    public List<User> findAll() throws IOException;

    public User findById(int id);
}
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.caoyan.dao.UserMapper;
import com.caoyan.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;

public class ServiceDemo {
    public static void main(String[] args) throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> all = userMapper.findAll();
        System.out.println(all);
        User user = userMapper.findById(1);
        System.out.println(user);
    }
}

Mybatis系列之——dao层实现和动态SQL 1.9、Mybatis的dao层实现 1.9.1、传统开发方式 编写UserDao接口 public interface UserDao { List<User> findAll() throws IOException; } 编写UserDaoImpl实现 public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException{ 阅读详情

相关推荐

Pixhawk变砖自救指南:从DFU模式到固件重刷全流程(附2.4.8实测)

本文详细介绍了Pixhawk飞控变砖后的自救方法,从DFU模式进入、固件重刷到高级恢复技巧全流程。特别针对国产版本boot0引脚未引出的特殊情况提供了解决方案,帮助用户通过QGC或Mission Planner地面站工具恢复飞控功能,适用于2.4.8等常见固件版本。

weixin_29168813的博客 339

Mybatis的Dao层实现

Mybatis的Dao层实现 1、传统方式实现 创建接口com.dao.UserMapper package com.dao; import java.io.IOException; import java.util.List; public interface UserMapper { public List<Object> findall() throws IOException; } 创建文件com.dao.impl.UserMapperImpl package com.d

qq_56299755的博客 1591

STM32N6低功耗模式详解:从Sleep到VBAT的工程实践

低功耗模式是嵌入式系统能效设计的核心机制,其本质是通过动态调控CPU时钟、外设供电与电压域状态,在唤醒延迟、功能保留与静态电流之间实现最优平衡。基于Arm Cortex-M55内核的STM32N6采用多电压域架构(核心域/保持域/备份域/模拟域),支持Sleep、Stop、Standby及VBAT四级功耗分级,并深度融合DVFS(动态电压频率缩放)与外设时钟门控等关键技术。该设计不仅显著降低待机电流至亚微安级,更保障RTC持续计时、TCM内容可选保留、WKUP快速唤醒等关键能力,广泛应用于电池供电的AIoT

weixin_36369848的博客 245

06Mybatis的Dao层实现

1.1 传统开发方式 1.1.1编写UserDao接口 public interface UserDao { List<User> findAll() throws IOException; } 1.1.2.编写UserDaoImpl实现 public class UserDaoImpl implements UserDao { public List<User...

痞子王的博客 377

Ubuntu 上 1Panel 的安装与高效运维实践

本文详细介绍了在Ubuntu系统上安装和高效运维1Panel面板的完整实践指南。内容涵盖了一键安装、Docker容器可视化部署、计划任务自动化以及网站数据库管理等核心功能,并提供了安全加固、资源监控与数据备份等进阶技巧,旨在帮助用户快速搭建并管理一个强大易用的服务器环境。

weixin_29210759的博客 144

PCL实现STL文件读取和转换为PCD格式

本文介绍如何使用点云库(Point Cloud Library,PCL)读取STL(Standard Triangle Language)文件,并将其转换为点云数据(PointCloud Data,PCD)格式。通过将STL文件转换为PCD格式,我们可以更方便地处理和分析点云数据。本文介绍了如何使用PCL库读取STL文件并将其转换为PCD格式的点云数据。以上是关于PCL读取STL文件并转存为PCD格式的简要介绍和示例源代码。下面的示例展示了如何将STL文件转换为PCD格式。函数将点云数据保存为PCD文件。

ByteEchoX的博客 805

mybatis中dao层的实现

mybatis中dao层的实现 1.传统方式实现dao层 package com.shenhao.dao; import com.shenhao.domain.User; public interface UserDao { User findById(int id); } package com.shenhao.dao.impl; import com.shenhao.dao.UserDao; import com.shenhao.domain.User; import org.apach

xiaotai1234的博客 914

RV1126 ISP调参实战:3A算法参数调节的7个技巧

││ │ DEMOSAIC (去马赛克) │ ││ │ GAMMA (Gamma 校正) │ ││ │ DPC (坏点校正) │ ││。

小灰灰的博客 668

【Mybatis】Mybatis介绍和Dao层实现

原始jdbc开发存在的问题如下①数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能②sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。③查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置应对上述问题给出的解决方案①使用数据库连接池初始化连接资源②将sql语句抽取到xml配置文件中ORM编写UserMapper映射文件...

weixin_52847234的博客 2235

STM32F103C8T6驱动DHT11温湿度传感器程序

本程序基于 STM32F103C8T6 微控制器,通过 GPIO 模拟单总线通信时序实现对 DHT11 温湿度传感器的数据采集,主机采用拉低数据线的方式触发传感器启动,并通过检测高电平持续时间区分逻辑“0”和“1”,依次读取湿度和温度的整数数据及校验位,经过校验后将有效结果存入缓存数组,实现对环境温湿度的周期性测量与处理。

加斯顿工程师的博客 201

【即插即用模块】注意力篇 | MICCAI 2023 | MFE:多尺度特征提取,告别固定感受野,猛涨2个点!

本文提出一种用于低分辨率乳腺癌病理图像超分辨率与分类的网络SHISRCNet。针对现有方法处理低分辨率图像效果差、感受野固定等问题,设计了多特征提取模块(MFE),通过多速率空洞卷积覆盖全尺度感受野(局部到全局),结合递进残差连接和动态权重融合机制,实现自适应多尺度特征增强。实验表明,该模块在超分辨率任务中PSNR提升近2个点,分类准确率显著提高。代码提供详细注释,支持即插即用,适用于各类多尺度视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 207

mybatis框架学习 Dao层的两种实现方式

昨天我们用的方法在测试类里利用三板斧:加载核心配置文件,创建会话工厂,创建会话。通过会话资源的访问得以实现数据库的操作,其实实现这个功能的方式有两种: 一种是手动的实现也就是在dao层创建接口与实现接口的实现类(dao层就是M<model层>V<view层>C<controller层>三层架构中M层里与数据库接触最深的代码层) public interface UserDao { List<User> list() throws IOExce

m0_59588838的博客 2027

手把手教你学Simulink——电机电磁兼容与可靠性场景示例:基于Simulink的电机噪声抑制控制仿真

本文带你完成了电机噪声抑制控制的Simulink仿真,实现了:✅ 揭示了电磁噪声从电流到声音的传递机理✅ 搭建了含死区、固定载波等噪声源的高保真模型随机PWM(消除啸叫)谐振控制器(抑制5/7次嗡鸣)谐波注入(降低THD) ✅ 通过综合方案将噪声降低10 dB以上(感知响度减半!) ✅ 为产品静音品质提升提供可落地的控制方案。

MHD0815的博客 94

【Mybatis】一文搞懂Dao层实现原理

Mybatis对Dao层接口做了JDK动态代理,调用Dao接口的方法时会进入到代理对象的invoke增强方法

qq_45797138的博客 1125

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

mysql dao层怎么写_Mybatis的Dao层实现

1.Mybatis的Dao层实现1.1 传统开发方式1.1.1编写UserDao接口public interface UserDao {List findAll() throws IOException;}1.1.2.编写UserDaoImpl实现public class UserDaoImpl implements UserDao {public List findAll() throws IO...

weixin_36165569的博客 1585

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Mybatis实现Dao层的方式

Mybatis实现Dao层的方式 一.原生Dao层的实现 jdbc工具类的加载 public static String url=null; public static String username=null; public static String password=null; static{ try { //读取本地类加载路径下的properties文件 InputStream is = jdbcUt

weixin_50392548的博客 705

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MyBatis的Dao层实现方式

1.1 传统开发方式 编写UserDao接口 public interface UserDao { List<User> findAll() throws IOException; } 编写UserDaoImpl实现 public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException { InputStream resourc

qq_45566079的博客 326

【MyBatis】Dao层的实现

文章目录一、 查询所有1.Dao层接口2.Dao层实现类3.测试二、 插入用户1.Dao层接口2.Dao层实现类3.测试三、 刪除用户1.Dao层接口2.Dao层实现类3.测试四、 更新用户1.Dao层接口2.Dao层实现类3.测试五、 查询一个用户1.Dao层接口2.Dao层实现类3.测试六、 根据名称模糊查询1.Dao层接口2.Dao层实现类3.测试七、 聚合函数查询总数1.Dao层接口2.Dao层实现类3.测试八、流程分析 一、 查询所有 1.Dao层接口 package com.zyx.cor.

懂得一千零一种,赋予你失败的方法! 1618

Mybatis怎么实现dao层?

有两种方式:1、传统方式 2、代理方式开发 第一种方式:传统方式 1、编写dao层 public interface UserDao { //查询所有 List<User> findAll() throws IOException; } 2、编写dao层实现类 /* Dao层实现类 */ public class UserDaoImpl implement UserDao{ /* 定义查...

qq_45721289的博客 1884

18MyBatis的Dao层实现

1.Mybatis的Dao层实现 1.1 传统开发方式 1.1.1编写UserDao接口 public interface UserDao { List<User> findAll() throws IOException; } 1.1.2.编写UserDaoImpl实现 public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException {

LCreator的博客 159

Mybatis的Dao层实现原理

1.Mybatis的Dao层实现 1.1 传统开发方式 1.1.1编写UserDao接口 public interface UserDao { List<User> findAll() throws IOException; } 1.1.2.编写UserDaoImpl实现 public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException

kopoo的博客 2336

我的 MyBatis 实现的 Dao 层

学了 Mybatis 之后,发现用 Mybatis 写 Dao层实在是简便多了,主要是在表的映射这块简单了很多。下面是我实现的使用 Mybatis 实现的简单的操作用户表的 Dao 层。 使用 Mybatis 实现 DAO 层,一共有两种方式: 原始的 DAO 层的实现 使用 Mapper 代理方式【这里又分两种:直接配置 Mapper 代理;使用包扫描配置 Ma...

ddd77197的博客 175
上一篇: MyBatis相应API
下一篇: MyBatis映射文件深入
Caoyy686868
博客等级 码龄8年 5742粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caoyy686868

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值