使用Mybatis实现基本的增删改查------数据输入

news2024/11/24 18:35:31

创建一个空的Maven项目,删去src,用作存储pom的父项目

pom中存放下列依赖:

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
    </dependencies>

 创建Module在pom中加入测试依赖

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

 创建数据库

CREATE TABLE student(
stuID INTEGER NOT NULL,
stuName VARCHAR(20),
stuSalary DECIMAL(10,3) 
)

 创建实体类

package su.Entity;

/**
 * @author haustsusu
 * @create 2023-09-08-19:12
 */
public class Student {
    private Integer stuId;
    private String stuName;
    private Double stuSalary;

    public Student() {
    }

    public Student(Integer stuId, String stuName, Double stuSalary) {
        this.stuId = stuId;
        this.stuName = stuName;
        this.stuSalary = stuSalary;
    }

    public Integer getStuId() {
        return stuId;
    }

    public void setStuId(Integer stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public Double getStuSalary() {
        return stuSalary;
    }

    public void setStuSalary(Double stuSalary) {
        this.stuSalary = stuSalary;
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuSalary=" + stuSalary +
                '}';
    }
}

 创建Mybatis框架需要创建Mapper.xml,Mapper接口,MybatisConfig配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--    引入jdbc.properties-->
    <properties resource="jdbc.properties"></properties>

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>



    <environments default="development">
<!--        表示配置Mybatis的一个具体环境-->
        <environment id="development">
<!--            mybatis内置的事务管理器-->
            <transactionManager type="JDBC"/>
<!--            配置数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--     而 mappers 标签就是用来配置需要加载的 sql 映射配置文件路径的-->
    <mappers>
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

 Mapper接口

public interface stuMapper {
    List<Student> QueryStudents();

    Student QueryStudent(Integer Id);

}

Mybatis配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--    引入jdbc.properties-->
    <properties resource="jdbc.properties"></properties>

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>



    <environments default="development">
<!--        表示配置Mybatis的一个具体环境-->
        <environment id="development">
<!--            mybatis内置的事务管理器-->
            <transactionManager type="JDBC"/>
<!--            配置数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--     而 mappers 标签就是用来配置需要加载的 sql 映射配置文件路径的-->
    <mappers>
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

最后在测试类中运行

public class StudentTest {
    @Test
    public void test01() throws IOException {
        //1.读取外部配置文件,获取一个输入流
        InputStream resourceAsStream = Resources.getResourceAsStream("MybatisConfig.xml");

        //2.创建sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

        //3.获取Sqlsession对象[自动开启JDBC]
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.获取代理mapper对象
        stuMapper mapper = sqlSession.getMapper(stuMapper.class);

        //执行查询所有学生的方法
        List<Student> students = (List<Student>) mapper.QueryStudents();
        //查询id学生的方法
        Student student = mapper.QueryStudent(10001);
        System.out.println("某个学生--------------------");
        System.out.println(student);
        System.out.println("某个学生--------------------");

        for (Student s:students){
            System.out.println(s);
        }
        //5.管理资源与提交事务
        sqlSession.close();

    }
}

结果:

E:\Java\jdk1.8.0_301\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:E:\IDEA\idea\IntelliJ IDEA 2020.1\lib\idea_rt.jar=8837:E:\IDEA\idea\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "E:\IDEA\idea\IntelliJ IDEA 2020.1\lib\idea_rt.jar;E:\IDEA\idea\IntelliJ IDEA 2020.1\plugins\junit\lib\junit5-rt.jar;E:\IDEA\idea\IntelliJ IDEA 2020.1\plugins\junit\lib\junit-rt.jar;E:\java\jdk1.8.0_301\jre\lib\charsets.jar;E:\java\jdk1.8.0_301\jre\lib\deploy.jar;E:\java\jdk1.8.0_301\jre\lib\ext\access-bridge-64.jar;E:\java\jdk1.8.0_301\jre\lib\ext\cldrdata.jar;E:\java\jdk1.8.0_301\jre\lib\ext\dnsns.jar;E:\java\jdk1.8.0_301\jre\lib\ext\jaccess.jar;E:\java\jdk1.8.0_301\jre\lib\ext\jfxrt.jar;E:\java\jdk1.8.0_301\jre\lib\ext\localedata.jar;E:\java\jdk1.8.0_301\jre\lib\ext\nashorn.jar;E:\java\jdk1.8.0_301\jre\lib\ext\sunec.jar;E:\java\jdk1.8.0_301\jre\lib\ext\sunjce_provider.jar;E:\java\jdk1.8.0_301\jre\lib\ext\sunmscapi.jar;E:\java\jdk1.8.0_301\jre\lib\ext\sunpkcs11.jar;E:\java\jdk1.8.0_301\jre\lib\ext\zipfs.jar;E:\java\jdk1.8.0_301\jre\lib\javaws.jar;E:\java\jdk1.8.0_301\jre\lib\jce.jar;E:\java\jdk1.8.0_301\jre\lib\jfr.jar;E:\java\jdk1.8.0_301\jre\lib\jfxswt.jar;E:\java\jdk1.8.0_301\jre\lib\jsse.jar;E:\java\jdk1.8.0_301\jre\lib\management-agent.jar;E:\java\jdk1.8.0_301\jre\lib\plugin.jar;E:\java\jdk1.8.0_301\jre\lib\resources.jar;E:\java\jdk1.8.0_301\jre\lib\rt.jar;D:\SSM_MybatisOne\SSM_Mybatis_Student\target\test-classes;D:\SSM_MybatisOne\SSM_Mybatis_Student\target\classes;C:\Users\小苏\.m2\repository\junit\junit\4.13.2\junit-4.13.2.jar;C:\Users\小苏\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\小苏\.m2\repository\org\mybatis\mybatis\3.5.11\mybatis-3.5.11.jar;C:\Users\小苏\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 StudentCRUDTest.StudentTest,test01
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
Opening JDBC Connection
Created connection 1909546776.
Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@71d15f18]
==>  Preparing: select stuID stuId,stuName stuName,stuSalary stuSalary from student
==> Parameters: 
<==    Columns: stuId, stuName, stuSalary
<==        Row: 10001, 苏宝全, 2000.365
<==        Row: 10002, 苏风严, 3000.451
<==      Total: 2
==>  Preparing: select stuID stuId,stuName stuName,stuSalary stuSalary from student where stuId=?
==> Parameters: 10001(Integer)
<==    Columns: stuId, stuName, stuSalary
<==        Row: 10001, 苏宝全, 2000.365
<==      Total: 1
某个学生--------------------
Student{stuId=10001, stuName='苏宝全', stuSalary=2000.365}
某个学生--------------------
Student{stuId=10001, stuName='苏宝全', stuSalary=2000.365}
Student{stuId=10002, stuName='苏风严', stuSalary=3000.451}
Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@71d15f18]
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@71d15f18]
Returned connection 1909546776 to pool.

Process finished with exit code 0

 

场景一:传入单个数据:(数据名可以随意写,但不建议)

场景二:传入一个实体对象

场景三:传入多个简单类型

 

 mapper接口中的方法不能出现重载,重载会导致在Mapper.xml中无法根据id查找到对应的接口方法

 

场景四:传入Map

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/995018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系列二、Nginx简介

一、概述 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;处理高并发的能力十分强大&#xff0c;能够经受的住高负载的考验&#xff0c;有报告表明其能支持高达50000个并发连接数。 二、代理分类 2.1、正向代理 如果把局域网外的Internet想象成一个巨大的资源库&#x…

基于SSM的家居商城系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

算法-分治算法

文章来源&#xff1a; https://blog.csdn.net/weixin_45630258/article/details/126425400 欢迎各位大佬指点、三连 一、分治 1、定义&#xff1a;分治&#xff0c;也就是分而治之。 它的一般步骤是&#xff1a; ① 将原问题分解成若干个规模较小的子问题&#xff08;子问题…

【计算机网络】OSI七层网络模型概述及应用举例

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…

Hadoop分布式模式配置

hadoop环境准备&#xff1a; hadoop下载地址&#xff1a;http://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz hadoop集群的安装配置大致分为以下六个步骤&#xff1a; 选定一台机器作为master 在master节点上创建hadoop用户、安装ssh服务端、配…

春秋云镜 CVE-2016-0785

春秋云镜 CVE-2016-0785 S2-029 靶标介绍 2.3.28 之前的 Apache Struts 2.x 允许远程攻击者通过标签属性中的“%{}”序列执行任意代码。 启动场景 漏洞利用 工具利用 得到flag flag{a4c7fc9a-8e2d-49b8-9b09-22790fb2bfb6}

APO 载脂蛋白

Apolipoprotein E structure: insights into function-2006 Apolipoprotein E: Structural Insights and Links to Alzheimer Disease Pathogenesis APO-E 突变基因检测&#xff1b; APO-D, APO-M ; lipocalin ; APO-H CCP , 凝血诊断&#xff0c;狼疮抗凝物&#xff0…

Spring框架入门:构建你的第一个Web应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Matlab图像处理-多阈值分割

多阈值分割 在某些时候图像使用单独的阈值不能够对其实现有效地分割&#xff0c;例如在灰度直方图中有明显的三个峰时候&#xff0c;我们需要提取中间峰&#xff0c;这时我们使用双阈值分割会得到较好的分割效果。如下例子中生成灰度直方图中有两个峰&#xff0c;选择合适的两…

【strstr函数的介绍和模拟实现——超详细版】

strstr函数的介绍和模拟实现 strstr函数的介绍 资源来源于cplusplus网站 strstr函数声明&#xff1a; char *strstr( const char *str1, const char *str2 ); 它的作用其实就是&#xff1a; 在字符串str1中查找是否含有字符串str2&#xff0c;如果存在&#xff0c;返回str2在…

数据安全服务是什么意思?

数据安全服务是指为保护用户的数据免受未经授权的访问、修改、损坏或泄露的服务。随着信息化的发展&#xff0c;大量的个人和企业数据被存储在网络上&#xff0c;数据安全问题也日益受到关注。数据安全服务旨在帮助用户识别和应对各种潜在的数据安全风险&#xff0c;并提供相应…

支付宝沙箱调用错误

支付宝沙箱调用参数就三个APPID&#xff0c;用户私钥&#xff0c;支付宝公钥&#xff0c; 发送请求需要的配置 alipay: app_id: 2021000122636644 merchant_private_key: 用户私钥 alipay_public_key: 支付宝公钥 sign_type: RSA2 charset: utf-8 gatewayUrl: https://openap…

企业架构LNMP学习笔记30

1、upstream 中server的关键字&#xff1a;语法&#xff1a; upstream中的分发之后的几个关键字&#xff1a; 1&#xff09;backup 备 其他的没有backup标识的都不可用了&#xff0c;才分发到backup&#xff1b; 2&#xff09;down 此条配置&#xff0c;不会被分发到。 syst…

Android Studio实现一笔画完小游戏

文章目录 一、项目概述二、开发环境三、详细设计3.1、数据库设计3.2、普通模式3.3、随机模式3.4、关卡列表 四、运行演示五、项目总结六、源码获取 一、项目概述 Android一笔画完是一种益智游戏&#xff0c;玩家需要从起点开始通过一条连续的线&#xff0c;将图形中所有的方块…

谷歌浏览器书签位置及怎么导入书签

谷歌浏览器书签位置&#xff1f; 在谷歌浏览器地址栏输入chrome://version/ 按回车键打开谷歌浏览器安装信息在显示的个人资料路径查找到Bookmarks文件&#xff0c;及为谷歌浏览器书签文件 谷歌浏览器怎么导入书签&#xff1f; 将Bookmarks加入.html后缀在书签管理器中找到右…

可观测性在灰度发布中的应用

前言 随着云计算的发展、云原生时代的来临&#xff0c;企业数字化转型进程不断深入&#xff0c;应用开发也越来越多地基于微服务化模式&#xff0c;快速迭代的能力使得应用开发更高效、更灵活。同时&#xff0c;也不得不面临应用版本快速升级所带来的的巨大挑战。 传统的发布方…

【数据结构与算法系列3】有序数组的平方 (C++ Python)

给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#xff1a;平方后&#xff0c;数组变为 …

Spring框架的未来:Spring 6的新特性预览

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Matlab图像处理-自适应阈值

自适应阈值 在许多的情况下&#xff0c;背景的灰度值并不是常数&#xff0c;物体和背景的对比度在图像中也有变化。这时&#xff0c;一个在图像中某一区域效果良好的阈值在其它区域却可能效果很差。在这种情况下&#xff0c;把灰度阈值取成一个随图像中位置缓慢变化的函数值是…

深度优先搜索遍历与广度优先搜索遍历

目录 一.深度优先搜索遍历 1.深度优先遍历的方法 2.采用邻接矩阵表示图的深度优先搜索遍历 3.非连通图的遍历 二.广度优先搜索遍历 1.广度优先搜索遍历的方法 2.非连通图的广度遍历 3.广度优先搜索遍历的实现 4.按广度优先非递归遍历连通图 一.深度优先搜索遍历 1.深…