1 快速构建mybatis项目

news2024/11/27 3:52:29

1.1 使用Maven的quickstart框架

        注意是不出现w的quickstart:

 

 1.2 加入依赖

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

    <!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>

    <!--mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.9</version>
    </dependency>
 </dependencies>

1.3 引入插件

<build>
    <!--资源插件:处理src/main/java目录中的xml-->
  <resources>
    <resource>
      <directory> src/main/java</directory> <!--所在的目录-->
      <includes><!--包括目录下的.properties,.xml文件都会扫描到-->
        <include>**/*.properties</include>
        <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>
    </resource>
  </resources>
  </build>

        注意加了插件后dao的xml文件才能加载到target的classes中:

 1.4 在pojo包中创建Student实体类

package jiang.pojo;

public class Student {
    private Integer id;
    private String name;
    private Integer age;

    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 Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Student() {
    }
}

1.5 创建对应的Student数据库

1.6 在dao包中创建StudentDao接口

package jiang.dao;

import jiang.pojo.Student;

public interface StudentDao {
    Student selectStudentById(Integer id);
}

1.7 在dao包中创建StudentDao.xml文件

        注意:需要修改的有namespace、id、resultType;sql语句后面不写分号;

<?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="jiang.dao.StudentDao"><!--namespace、id、resultType都需要修改-->
    <select id="selectStudentById" resultType="jiang.pojo.Student"> 
        <!--查询一个学生Student
            <select>:表示查询操作,里面的select
            id:要执行的sql语句的唯一表示。是一个自定义的字符串。
                推荐使用dao接口中的方法名称
            resultType:告诉mybatis,执行sql语句,把数据赋值给那个类型的java对象。
                resultType的值现在使用的java对象的全限定名称,从java路径后开始写包路径
          -->
        SELECT * FROM student where id = 1
    </select>
</mapper>

1.8 在main中创建resources资源包

1.9 在resources中创建mybatis.xml主配置文件

        要修改的部分:

        1.<property name="url" value="jdbc:mysql://localhost:3306/study?useUnicode=true&amp;characterEncoding=utf-8"/>     study是数据库的名称!

        2.<mapper resource="jiang/dao/StudentDao.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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--配置数据源:创建connection对象。-->
            <dataSource type="POOLED">
                <!--driver:驱动的内容-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--url:连接数据库的url-->
                <property name="url" value="jdbc:mysql://localhost:3306/study?useUnicode=true&amp;characterEncoding=utf-8"/>
                <!--用户名-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--指定其他mapper文件的位置:找到其他文件的sql语句-->
    <mappers>
        <!--使用mapper的resource属性指定mapper文件路径
        这个路径是从target/classes路径开启的
        使用注意:
        resoruce="mapper文件的路径,使用/分割路径"
        一个mapper resource指定一个mapper文件
        -->
        <mapper resource="jiang/dao/StudentDao.xml"/>
    </mappers>
</configuration>

 1.10 创建测试内容

package jiang;

import jiang.pojo.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.apache.ibatis.io.Resources;


import java.io.IOException;
import java.io.InputStream;

public class MyTest {
    @Test
    public void test1() throws IOException {
        //调用mybatis某个对象的方法,执行mapper文件中的sql语句
        // mybatis核心类:sqlsessionFactory
        //1.定义mybatis主配置文件的位置,从类路径开始的相对路径
        String config = "mybatis.xml";
        //2.读取主配置文件。使用mybatis框架中的Resources类
        InputStream inputStream = Resources.getResourceAsStream(config);
        //3.创建SqlSessionFactory对象,使用sqlSessionFactoryBuidler类
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        //4.获取SqlSession对象
        SqlSession sqlSession = factory.openSession();
        //5.指定要执行的sql语句的id
        // sql的id = namespace+"."+ selectlupdate|insert |delete标签的id属性值(接口的方法名)
        String sqlId = "jiang.dao.StudentDao"+"."+"selectStudentById";
        //6.通过SqlSession方法,执行sql语句
        Student student = sqlSession.selectOne(sqlId);
        System.out.print("使用mybatis查询一个学生:"+student);
        //7.关闭SqlSession对象
        sqlSession.close();
    }
}

        运行结果如下:

 

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

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

相关文章

如何评测一个大语言模型?

编者按&#xff1a;大型语言模型&#xff08;Large language models, LLMs&#xff09;因其在学术界和工业界展现出前所未有的性能而备受青睐。随着 LLMs 在研究和实际应用中被广泛使用&#xff0c;对其进行有效评测变得愈发重要。近期已有多篇论文围绕大模型的评测进行研究&am…

二级分类基本实现步骤(小兔鲜儿)【Vue3】

二级分类 整体认识和路由配置 二级分类功能描述 配置二级路由 准备组件模版 <script setup></script><template><div class"container "><!-- 面包屑 --><div class"bread-container"><el-breadcrumb separa…

OA会议管理系统之会议发布(内含原型图项目介绍多功能下拉框源码)

目录 一、前言 1.什么是OA会议 2.OA会议项目背景 二、会议发布功能实现 1.功能介绍 2.功能分析 1.原型图以及数据表分析 2.查看官网搭建JSP页面 3.功能实现 1.实体类 2.dao层 3.JSP页面 4.Web层 4.案例演示 一、前言 1.什么是OA会议 会议OA指的是会议办公自动化…

设计模式结构型——外观模式

目录 什么是外观模式 外观模式的实现 外观模式的特点 什么是外观模式 外观模式&#xff08;Facade Pattern&#xff09;&#xff1a;又叫作门面模式&#xff0c;归属于结构型模式。外观模式定义了提供了定义了一个统一的高层接口&#xff0c;即为子系统中的一组接口提供一个…

PMP 数据收集工具与技术

数据收集工具与技术 (9个) 标杆对照 标杆对照是指将实际或计划的产品、流程和实践与其他可比组织的 做法进行比较&#xff0c;以便识别最佳实践、形成改进意见&#xff0c;并为绩效考核 提供依据。 头脑风暴 头脑风暴是一种数据收集和创意技术&#xff0c;主要用于在短时间…

苍穹外卖day05——Redis(被病毒入侵)+店铺营业状态设置

Redis被病毒入侵了 数据删光光然后只剩这四个玩意&#xff0c;乱下东西乱删东西&#xff0c;还好是docker部署&#xff0c;不然就寄了。 在服务器上部署redis记得一定要设置密码&#xff0c;不然被人扫肉鸡注入病毒整个服务器给你崩掉。 使用配置类的方式搭建相关程序 配置数…

【华为OD机试】经典屏保【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”, 如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹: 请根据如下要求,实现屏保Logo坐标的计算算法 1、屏…

[23] TriPlaneNet: An Encoder for EG3D Inversion

paper | code | project 总结&#xff1a; 任务是3D GAN Inversion&#xff0c;旨在找到给定图像的隐码/Tri-plane。现有方法可分为Optimizaiton-based methods和encoder-based methods。前者旨在通过损失找到最优隐码&#xff0c;后者旨在学习给定图片和隐码的映射关系。前者…

蚁剑--编码器的利用

先说下蚁剑编码器的作用&#xff0c;当使用蚁剑控制webshell向服务器发送数据包时&#xff0c;数据包中的body部分会按照编码器中定义的规则进行编码或者加密后在发送&#xff0c;这样就可以避免有比较明显的命令执行特征从而被WAF拦截。 我们平时遇到一些文件上传漏洞&#x…

maven的pom.xml文件解释(远程仓库阿里云)

<?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://ma…

layui上传文件弹出请求上传接口出现异常的终极解决方案(v2.68版本、ajax底层逻辑修改、debug快速定位)

layui不同版本情况系列 解决layUI请求上传接口出现异常的解决方案layui框架实战案例(3)&#xff1a;layui上传错误请求上传接口出现异常解决方案漏刻有时导入数据layUI上传提示“请求上传接口出现异常”的解决方案layui上传文件弹出请求上传接口出现异常的终极解决方案 layui上…

C语言库函数 — 错误信息报告函数

前言 本文介绍错误信息报告函数 错误信息报告函数的作用&#xff1a; 帮助程序员快速定位代码中的错误&#xff0c;以便更快地进行调试和修复问题。 文章目录 前言一、错误信息报告函数什么是错误信息报告函数错误信息报告函数的作用strerror函数介绍strerror函数使用错误码对应…

NLP多模型集成与比较

目录 数据集目的所用的两种词嵌入方式步骤随机读取10000条文本TF-IDF方法多模型比较CNN (用于比较 TF-IDF嵌入和词向量嵌入时的区别)LSTMBI-LSTM 数据集 10分类的新闻文本分类任务 目的 1.比较不同数据处理方式&#xff0c;词嵌入方式对任务的影响 2.比较相同处理方式下&…

对于awd

最近我们老师直接说要我准备awd&#xff0c;大概率要我上场我就顺便整理一下awd的资料&#xff08;准备写很多所以建议大家收藏一下&#xff09; 攻防指北 先来一个思维导图 Awd竞赛 AWD(Attack With Defense&#xff0c;攻防兼备)是一个非常有意思的模式&#xff0c;你需要…

4P营销模型

4P营销模型 菲利普科特勒在其畅销书《营销管理&#xff1a;分析、规划与控制》中进一步确认了以4P为核心的营销组合方法. 模型介绍 「4P营销模型」是市场营销中的经典理论&#xff0c;代表了产品、价格、促销和渠道四个要素。这些要素是制定市场营销策略和实施计划的关键组成部…

ARM(Day5)

思维导图&#xff1a; 通过封装函数实现点灯&#xff1a;

CAN转EtherNet/IP网关can协议支持哪两种报文

你是否曾经遇到过不同的总线协议难以互相通信的问题&#xff1f;远创智控的YC-EIP-CAN网关为你解决了这个烦恼&#xff01; 远创智控YC-EIP-CAN通讯网关是一款自主研发的设备&#xff0c;它能够将各种CAN总线和ETHERNET/IP网络连接起来&#xff0c;解决不同总线协议之间的通信障…

小程序 methods方法互相调用 this.onClickCancel is not a function

背景 做了一个自定义的弹出对话窗口&#xff0c;主要是自定义一些文本颜色。 问题 但是点击按钮事件&#xff1a;取消与确认&#xff0c;调用了同一个接口&#xff0c;然后想着走不同方法&#xff0c;需要调用methods其他方法。然后报错了&#xff1a; VM1081 WAService.js:…

【综述】化学预训练模型

目录 摘要1 引言2 分子描述符和编码器 (Molecular Descriptors and Encoders)3 预训练策略 (Pre-training Strategies)3.1 自动编码 (AutoEncoding, AE)3.2 自回归建模 (Autoregressive Modeling, AM)3.3 掩蔽组件建模 (Masked Component Modeling, MCM)3.4 上下文预测 (Contex…

绘出「星辰大海」:华为云Astro轻应用新手指南-第二章

第2章 Astro轻应用奇遇——用鼠标「拖拽」的开发 不被编程所困&#xff0c;像玩拼图一样打造订购系统&#xff01; 今天&#xff0c;我们用鼠标拖拽的方式开发订餐应用。 读过本章&#xff0c;你可以同理开发出各异的订购小程序。 继续Astro轻应用旅行吧&#xff01; 第1站…