IDEA创建Maven项目实现数据库表查询

news2024/9/21 20:51:47

        在此之前,务必确保你本地环境已经正确配置了 JDK 和 Maven,并且相关的环境变量已经设置。这是你踏上编程之旅的第一步,也是你与代码交互的基础。可通过命令提示符中输入 java -version 和 mvn -v 命令,以验证你的 JDK 和 Maven 是否正确安装和配置。此外,需要确保 Maven 的本地文件 setting.xml 已经正确配置了库的位置。这将为你提供访问各种依赖库的能力,为你的项目提供所需的支持。最后验证此框架的实际功能,同时你的本地数据库已经正确设置,并且已经创建了相应的表。请确保你的表结构和内容符合你的需求(符合Java类的员工表),并为你的应用程序提供所需的数据支持。

本项目视频教程

  

       

        首先新建一个Java默认项目,在 file> new> project... 选择创建maven项目,勾选Create from archetype中的org.apache.maven.archetypes:maven-archetype-webapp,然后next

        Name可以取任何你想要的,不影响项目ben's。展开Artifact Coordinates,为了保证代码能够正常运行, GroupId:org.mybatis、ArtifactId:mybatis、版本默认

         为了管理项目的依赖项和构建配置,以确保项目能够正确构建和运行。配置pom.xml文件,填入如下代码,并且刷新maven,安装对应的依赖。Java版本看你自己是什么版本,我这是jdk9。

<groupId>: 定义项目的组织或团队的唯一标识符。

<artifactId>: 定义项目的唯一标识符。

<version>: 定义项目的版本号。

<dependencies>: 定义项目的依赖项。在这个示例中,项目依赖于 MyBatis 和 MySQL Connector。

<properties>: 定义项目的属性。在这个示例中,定义了 Maven 编译器的源代码和目标版本。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
    </properties>


</project>

        创建完毕后,如果你的maven本地内容配置正确,那么不会有任何问题。右键项目,分别创建src/main/java、src/main/resources。创建结果如图所示。

        Java配置代码

接口 src/main/java/com/benmao/ins/EmployeeMapper.java 接口,这样可以随时更改方法

package com.benmao.ins;

import com.benmao.top.Employee;

//增删改查
public interface EmployeeMapper {
    Employee selectEmployeeId(Integer id);
}

类 src/main/java/com/benmao/ins/top/Employee.java 员工类,对应的数据库表文件也是。

package com.benmao.top;

public class Employee {
    private Integer id;
    private String name;
    private String gender;
    private String birth;
    private Integer deptid;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getBirth() {
        return birth;
    }

    public void setBirth(String birth) {
        this.birth = birth;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", birth='" + birth + '\'' +
                ", deptid=" + deptid +
                '}';
    }

    public Integer getDeptid() {
        return deptid;
    }

    public void setDeptid(Integer deptid) {
        this.deptid = deptid;
    }
}

         XML文件配置

src/main/resources/myxml/EmployeeMapper.xml

<mapper>: 根元素,用于包含映射器的配置信息。

namespace: 定义了映射器接口的全名,包括包名。

<select>: 定义了一个查询语句。它的 id 属性必须与映射器接口中的方法名保持一致。 resultType: 设置查询结果的类型,即映射到的实体类的类型。

SQL 语句: 在 <select> 标签内部定义了具体的 SQL 查询语句。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 名称空间必须填写对应的Mapper接口的全名,包括包名 -->
<mapper namespace="com.benmao.ins.EmployeeMapper">
    <!-- 查询标签的id必须和接口中的方法名保持一致 -->
    <!-- resultType: 设置查询结果的类型 -->
    <select id="selectEmployeeId" resultType="com.benmao.top.Employee">
        <!-- SQL语句 -->
        select * from employee where id = #{id}
    </select>
</mapper>

src/main/resources/mybatis-config.xml

此文件是配置数据库的连接地址和所需的账号与密码,同时应用到EmployeeMapper.xml关联,需要自己修改。

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/employee" />
                <property name="username" value="root" />
                <property name="password" value="wjc123456" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 添加你的 Mapper 配置 -->
        <!-- 这是需要根据不同而修改-->
        <mapper resource="myxml/EmployeeMapper.xml"/>
    </mappers>
</configuration>

        实现运行

数据库文件

首先需要在本地创建一个数据库,同时随员工类一一对应。

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50540
 Source Host           : localhost:3306
 Source Schema         : employee

 Target Server Type    : MySQL
 Target Server Version : 50540
 File Encoding         : 65001

*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for employee
-- ----------------------------
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`  (
  `id` int(10) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `gender` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  `birth` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `deptid` int(11) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of employee
-- ----------------------------
INSERT INTO `employee` VALUES (2, '笨猫', '男', '2099-9-29', 4);

SET FOREIGN_KEY_CHECKS = 1;

运行文件

        在src/main/java/com/benmao/创建HelloMybatis.java ,使用 MyBatis 进行数据库操作的基本流程,包括配置会话工厂、获取映射器对象、执行数据库操作等。

package com.benmao;

import com.benmao.ins.EmployeeMapper;
import com.benmao.top.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class HelloMybatis {
    public static void main(String[] args) throws Exception {
        // 根据提供的id从数据库表employee中查询出一个员工的信息
        // 要求使用mybatis持久层框架完成上面的需求

        // 根据提供的文件名获取文件的输入流
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        // 创建一个会话工厂,专门生产sqlSession会话对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 调用sqlSessionFactory工厂对象的openSession方法打开一个会话
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 调用sqlSession会话对象的getMapper方法获取对应的Mapper对象
        EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);

        // 调用mapper中的方法完成具体的数据库操作
        Employee employee = mapper.selectEmployeeId(2);
        System.out.println(employee);

        // 关闭和释放资源
        sqlSession.close();
    }
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

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

相关文章

多ip多进程代理的实现方法

目录 写在前面 一、背景 二、实现方法 1. 使用多线程处理代理请求 2. 使用多进程处理代理请求 3. 实现多IP代理 三、总结 写在前面 实现多IP多进程代理需要使用Python的多线程和多进程模块。本文将介绍如何使用这些模块来实现多IP多进程代理&#xff0c;并提供相关的代…

蓝桥杯练习——神秘咒语——axios

目标 完善 index.js 中的 TODO 部分&#xff0c;通过新增或者修改代码&#xff0c;完成以下目标&#xff1a; 点击钥匙 1 和钥匙 2 按钮时会通过 axios 发送请求&#xff0c;在发送请求时需要在请求头中添加 Authorization 字段携带 token&#xff0c;token 的值为 2b58f9a8-…

五.java数组

1.int [] arr{1,2,3} 2.lenarr.length; 3.数组内存执行原理 java程序编译后产生一个class文件然后提交到内存中的虚拟机JVM中去运行&#xff0c;java为了便于虚拟机运行程序就将虚拟机的这块内存划分为5个区域&#xff1a;方法区&#xff0c;栈&#xff0c;堆。。。 经典函数…

Matlab快捷键与函数

注释&#xff1a;注释对于代码的重要性我们就不做过多的解释了。不做注释的代码不是好代码。选中要注释的语句&#xff0c;按快捷键CtrlR,或者在命令行窗口上面的注释地方可以进行注释。当然也可以直接在语句前面“%”就可以&#xff08;注意&#xff1a;一定要用英文符号&…

BigDecimal类的使用,用于精确计算任意精度的数字

BigDecimal类 BigDecimal 是 Java 中用于精确表示任意精度的十进制数的类。在很多情况下,使用基本数据类型(如 double 或 float)进行浮点数计算可能会导致精度丢失或舍入错误。BigDecimal 提供了一种更精确的解决方案,可以处理需要高精度计算的场景,比如财务应用或科学计算…

29-3 哥斯拉安装使用

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、哥斯拉 (Godzilla) 介绍 哥斯拉是一个基于流量、HTTP全加密的webshell管理工具,具有以下特点: 内置了3种Payload以及6种加密器,6种支持脚本后缀,20个内置插件基于Java,可…

第十三届蓝桥杯省赛真题 Java B 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 星期计算试题 B: 山试题 C: 字符统计试题 D: 最少刷题数试题 E \mathrm{E} E : 求阶乘试题 F : \mathrm{F}: F: 最大子矩阵试题 G: 数组切分试题 H: 回忆迷宫试题 I: 红绿灯试题 J 拉箱子 发现宝藏 前些天发现了一个巨牛的人工智能学习…

仿muduo库实现one thread one loop式并发服务器

文章目录 一、项目简介 二、项目整体认识 2、1 HTTP服务器 2、2 Reactor模型 三、预备知识 3、1 C11 中的 bind 3、2 简单的秒级定时任务实现 3、3 正则库的简单使用 3、4 通用类型any类型的实现 四、服务器功能模块划分与实现 4、1 Buffer模块 4、2 Socket模块 4、3 Channel模…

【TD3思路及代码】【自用笔记】

1 组成&#xff08;Target Network Delayed Training&#xff09; Actor网络&#xff1a;这个网络负责根据当前的状态输出动作值。在训练过程中&#xff0c;Actor网络会不断地学习和优化&#xff0c;以输出更合适的动作。Critic网络&#xff1a;TD3中有两个Critic网络&#xff…

解决:springboot项目访问hdfs文件提示guava版本不兼容

1、问题描述 版本说明&#xff1a;我用的hadoop版本&#xff1a;3.1.3 项目可以正常启动&#xff0c;但是调用访问hdfs的服务时候报错,报错消息如下&#xff1a;com.google.common.base.preconditions.checkArgument(ZL java/lang/String;Ljava/lang/Object:)V 原因分析&#x…

力扣 字符串解码

维护一个放数字的栈&#xff0c;一个放字母的栈 遇到[把数字和字母入栈&#xff0c;遇到]把当前字母循环加上数字栈头遍的字母栈头 class Solution { public:string decodeString(string s) {string ans"";stack<int>sz;stack<string>zm;里面是string …

蓝桥杯(3.22 刷真题)

P8682 [蓝桥杯 2019 省 B] 等差数列 RE是因为除以0的情况 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[] res new int[n1];for(int i1;i&l…

集合深入------理解底层。

集合的使用 前提&#xff1a;栈、堆、二叉树、hashcode、toString()、quesalus()的知识深入和底层理解。 1、什么是集合 集合就是咋们所说的容器 ​ 前面我们学习过数组 数组也是容器 ​ 容器&#xff1a;装东西的 生活中有多少的容器呀? 水杯 教室 酒瓶 水库 只要是…

【论文速读】| 视觉对抗样本:突破对齐的大语言模型

本次分享论文为&#xff1a;Visual Adversarial Examples: Jailbreak Aligned Large Language Models 基本信息 原文作者&#xff1a;Xiangyu Qi, Peter Henderson, Kaixuan Huang, Ashwinee Panda, Mengdi Wang, Prateek Mittal 作者单位&#xff1a;普林斯顿大学、斯坦福大…

算法打卡day20|二叉树篇09|Leetcode 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

算法题 Leetcode 669. 修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 大佬视频讲解&#xff1a;修剪二叉搜索树视频讲解 个人思路 把这道题想复杂了&#xff0c;还想着如何去重构树 解法 递归法 依旧递归三步走 1.确定递归函数的参数以及返回值 这题递归需要返回值&#…

NVMe开发——NAND Flash的基本原理

1. 存储单元 1.1. 半导体 半导体&#xff08;semiconductor&#xff09;指常温下导电性能介于导体与绝缘体之间的材料。纯净半导体一般是四价原子(如硅或锗)。 1.1.1. P型半导体 P型半导体是通过将一个纯净的半导体材料&#xff08;如硅或锗&#xff09;中掺杂少量的三价杂…

软件管理rpm与yum

源代码包下载 Compare, Download & Develop Open Source & Business Software - SourceForgehttps://sourceforge.net/ rpm包下载 Welcome to the RPM repository on fr2.rpmfind.nethttp://rpmfind.net/linux/RPM/ 软件包管理 1.rpm包管理: 1)查询: 安装…

Linux网络协议栈从应用层到内核层②

文章目录 1、bind 源码剖析2、listen 源码剖析3、accept 源码剖析4、connect 源码剖析客户端调用connect成功&#xff0c;但三次握手并未完成&#xff0c;进程是如何阻塞自己客户端在connect时&#xff0c;如何选择源端口客户发送syn封包以及重传服务端收到syn封包&#xff0c;…

python通过tcp协议发送二进制数据

写c程序时经常会有发送私有化协议的过程&#xff0c;比如头结构数据包&#xff0c;数据包往往是一个结构体&#xff0c;有时为了方便调试会用python写一些测试程序。 发送的包的结构图示例如下&#xff1a; 接收包的结构图如下&#xff1a; 当然接收的RespBody会很多&#xf…

【Flask开发实战】防火墙配置文件解析(三)之python加工处理

一、前言 上一篇文章中&#xff0c;介绍了通过shell脚本读取配置文件获取到IP地址组、服务端口组、规则清单这三个模块类别基础数据。基础数据中还需要进一步进行展开处理&#xff0c;生成三类扩展表。如IP地址组中&#xff0c;同一个地址组下存在多个IP地址&#xff0c;每组I…