当前位置: 首页 > article >正文

Mybatis-Mapper接口方式

目录

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

示例: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.kler.cn/a/325936.html

相关文章:

  • 如何合理设计一套springcloud+springboot项目中的各个微服务模块之间的继承关系的最优方案
  • 微知-DOCA ARGP参数模块的相关接口和用法(config单元、params单元,argp pipe line,回调)
  • 【算法】【优选算法】前缀和(下)
  • HuggingFace:基于YOLOv8的人脸检测模型
  • 2411rust,异步函数
  • .NET 9.0 中 System.Text.Json 的全面使用指南
  • SpringBoot依赖之Microsoft SQL Server Driver
  • 谈谈Redisson分布式锁的底层实现原理
  • 怎么提取视频里的音频?非常简单的提取音频方法
  • 上下位关系自动检测方法(论文复现)
  • Stargazers Ghost Network在GitHub平台上的隐性威胁
  • 大数据复习知识点4
  • 深度估计任务中的有监督和无监督训练
  • leetcode45:跳跃游戏||
  • 超详细超实用!!!AI编程之cursor编写设计模式开闭原则实例(四)
  • Javase学习day1-前置知识
  • 【Android 源码分析】Activity短暂的一生 -- 目录篇 (持续更新)
  • 记一次教学版内网渗透流程
  • Proteus如何添加数码管
  • [遇到问题] Word中插入公式横线“-”变成了长连字符
  • 匿名管道 Linux
  • 2024年软考网络工程师中级题库
  • 汽车总线之----J1939总线
  • elementUI表格中某个字段(state)使用计算属性进行转换为对应中文显示
  • 【Linux】进程周边之优先级、调度与切换
  • 9.29总结