Mybatis-Mapper接口方式

news/2024/9/30 0:26:04 标签: mybatis, 数据库

目录

配置方式和接口方式的区别

示例:Mapper接口方式实现数据库的CRUD


配置方式和接口方式的区别

        Mybatis框架在配置方式的情况下,对数据库的CRUD操作直接通过SqlSession对象来操作,常用的方法有select、insert、update、delete等方法,在这些方法的参数中,需要准确的写明对应xml文件的namespace+方法,参考下图的代码方式:

        Mybatis接口方式(推荐方式)实现数据库的CRUD操作,采用接口方式开发,根据接口里面的方法实现数据库的操作,基于这种方式实现,需要如下约定:

  1. mapper文件中的namespace名称就是接口的包名+接口名称
  2. mapper文件中的方法需要和接口的方法名保持一致

示例:Mapper接口方式实现数据库的CRUD

        Mybatis Mapper接口方式实现数据库操作有如下步骤

1、pom添加mybatis等依赖

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.4</version>
        </dependency>

2、Mybatis配置(mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 驼峰命名转换 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <environments default="dev">
        <environment id="dev">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="com.text.datasource.C3P0DataSourceFactory">
                <property name="driverClass" value="com.mysql.jdbc.Driver"/>
                <property name="jdbcUrl" value="jdbc:mysql://xxx:3306/xxx?useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="user" value="xxx"/>
                <property name="password" value="xxx"/>
                <property name="initialPoolSize" value="5"/>
                <property name="maxPoolSize" value="20"/>
                <property name="minPoolSize" value="5"/>
            </dataSource>
        </environment>
    </environments>
    <!-- mapper文件-->
    <mappers>
        <mapper resource="mappers/student.xml"/>
    </mappers>
</configuration>

3、配置mapper文件 student.xml

<?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.text.mapper.StudentMapper">
    <select id="selectAll" resultType="com.text.entity.Student">
        select * from student
    </select>
</mapper>

注意: xml文件中的namespace一定是下方StudentMapper接口类的完整路径名,id就是StudentMapper接口类的方法名

4、编写Mapper接口 StudentMapper

package com.text.mapper;

import com.text.entity.Student;

import java.util.List;

public interface StudentMapper {

    List<Student> selectAll() throws Exception;
}

5、测试类

package com.text;

import com.text.entity.Student;
import com.text.mapper.StudentMapper;
import com.text.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class Application {
    public static void main(String[] args) throws Exception {
        SqlSession sqlSession = MyBatisUtils.openSession();

        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> students = mapper.selectAll();
        students.forEach(student -> {
            System.out.println(student);
        });
        MyBatisUtils.closeSession(sqlSession);

    }
}

注意:通过sqlSession的getMapper直接获取了Mapper接口,通过直接调用接口里面的方法进而对数据库进行操作

6、运行结果:


http://www.niftyadmin.cn/n/5683959.html

相关文章

物联网系统中网口芯片解决方案_PHY收发器

01 物联网系统中为什么要使用PHY收发器。 在物联网系统中使用PHY&#xff08;物理层&#xff09;收发器的原因主要可以归结为以下几个方面&#xff1a; 实现物理层通信 连接数字与模拟世界&#xff1a;PHY收发器作为以太网物理层的关键组件&#xff0c;能够将处理器、FPGA&a…

【CAM350】使用总结 <一>{ 光绘Gerber 对齐 }

〇、废话&#xff1a; 由于allegro和CAM350之间参数设置的问题&#xff1b;导致钻孔层和数据交付生产出现数据问题&#xff0c;或者同一个工程前后迭代&#xff0c;需要找出差别。 一、打开CAM350,打开两份光绘文件 二、增加工艺边后&#xff0c;不是很方便的找出区别&#x…

端侧多模态 | 不到10亿参数的端侧Agent竟媲美GPT-4V?AI手机不远了!

引言 简介 相关工作 模型 编码视觉信息 函数token 多阶段训练 模型评估 发送邮件 发送短信 Google搜索 Amazon购物 智能回收 失物招领 室内设计 Instacart购物 DoorDash(外卖平台)示例 动物护理 总结 引言 青山一道同云雨&#xff0c;明月何曾是两乡。 小伙…

金三银四:20道前端手写面试题

文章目录 一、前言二、题目1. 防抖节流解读 2.一个正则题3. 不使用a标签&#xff0c;如何实现a标签的功能4. 不使用循环API 来删除数组中指定位置的元素&#xff08;如&#xff1a;删除第三位&#xff09; 写越多越好5. 深拷贝解读 6. 手写call bind applycall 解读apply 解读 …

经纬仪的原理

经纬仪的原理主要基于测角原理&#xff0c;它是一种用于测量水平角和竖直角的精密仪器。经纬仪的基本组成部分包括基座、望远镜、水平度盘&#xff08;用于测量水平角&#xff09;和竖直度盘&#xff08;用于测量竖直角&#xff09;&#xff0c;以及水准器等辅助设备。 经纬仪…

QT设计中文输入法软键盘DLL给到C#开发步骤

开发目的&#xff1a;本文提供解决触摸屏C#程序中无法输入中文问题&#xff0c;中文拼音采用开源的谷歌输入法程序、使用QT编译中文输入法界面和中文输入法接口给到C#使用。 开发步骤&#xff1a; 1、QT中设计字母和字符输入界面 2、QT中设计数字输入界面 3、QT中封装调用谷歌…

python Scrapy 框架 demo

文章目录 前言python Scrapy 框架 demo1. 安装2. 百度热搜爬取demo2.1. 初始化项目2.2. 修改 items.pyitems.py2.3. 创建 spiders/baidu_spider.py2.4. 修改 pipelines.py2.5. 修改 settings.py 3. settings.py 相关配置说明4. 启动爬虫测试 前言 如果您觉得有用的话&#xff0…

优青博导团队/免费指导/数据分析//论文润色/组学技术服务 、表观组分析、互作组分析、遗传转化实验、生物医学

&#x1f31f; 教授团队领衔&#xff0c;全方位科研服务 &#x1f680; 一站式科研解决方案 &#x1f4c8; 加速科研进程&#xff0c;让成果不再等待 &#x1f4dd; 专业分析 定制服务 科研成功 &#x1f468;‍&#x1f52c; 立即行动&#xff0c;让科研成果跃然纸上 业务领…