JavaWeb学习-MyBatis-入门

news2024/11/13 15:21:57

JavaWeb学习-MyBatis-入门

  • 快速入门
    • 准备工作
    • 配置Mybatis(数据库连接)
    • 编写程序
      • mapper
      • test
  • 配置SQL提示
  • JDBC介绍
    • 概述
    • 案例
  • 数据库连接池
    • 概述
    • 连接池
      • 切换Druid连接池
  • lombok工具
    • 介绍
    • maven坐标
    • 案例
  • 来源

快速入门

准备工作

  1. 创建SpringBoot工程
  2. 数据库表user
    create table user
    (
        id     int unsigned primary key auto_increment comment 'ID',
        name   varchar(100) comment '姓名',
        age    tinyint unsigned comment '年龄',
        gender tinyint unsigned comment '性别, 1   男, 2:女',
        phone  varchar(11) comment '手机号'
    ) comment '用户表';
    
  3. 实体类User
    public class User {
        private Integer id;
        private String name;
        private Short age;
        private Short gender;
        private String phone;
    
        // 有参无参构造器
    
        // Getter/Setter方法
    
        // ToString方法
    }
    

配置Mybatis(数据库连接)

application.properties

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/db07-mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=root

编写程序

mapper

@Mapper // 在运行时, 会自动生成该接口的实现类对象(代理对象), 并且将该对象交给IOC容器管理
public interface UserMapper {

    // 查询全部用户信息
    @Select("select * from user")
    public List<User> list();
}

test

@SpringBootTest // springboot整合单元测试的注解
class SpringbootMybatisQuickstartApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    void testListUser() {

        List<User> userList = userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }
}

配置SQL提示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

JDBC介绍

概述

  • JDBC: (Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。

本质:

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包。
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

案例

@Test
public void testJdbc() throws Exception {
    //1. 注册驱动
    Class.forName("com.mysql.cj.jdbc.Driver");

    //2. 获取连接对象
    String url = "jdbc:mysql://localhost:3306/db07-mybatis";
    String username = "root";
    String password = "root";
    Connection connection = DriverManager.getConnection(url, username, password);

    //3. 获取执行SQL的对象Statement,执行SQL,返回结果
    String sql = "select * from user";
    Statement statement = connection.createStatement();
    ResultSet resultSet = statement.executeQuery(sql);

    //4. 封装结果数据
    List<User> userList = new ArrayList<>();
    while (resultSet.next()) {
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        short age = resultSet.getShort("age");
        short gender = resultSet.getShort("gender");
        String phone = resultSet.getString("phone");

        User user = new User(id, name, age, gender, phone);
        userList.add(user);
    }

    //5. 释放资源
    statement.close();
    connection.close();

    //6. 输出结果
    userList.stream().forEach(user -> {
        System.out.println(user);
    });
}

数据库连接池

概述

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  • 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优点:

  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

连接池

标准接口: DataSource

  • 官方(sun)提供的数据库连接池接口, 由第三方组织实现此接口
  • 功能: 获取连接 ()
    Connection getConnection() throws SQLException;
    

常见的连接池:

  • C3P0
  • DBCP
  • Druid: 阿里巴巴开源数据库连接池项目, java语言最好的数据库连接池之一
  • Hikari: SpringBoot默认

切换Druid连接池

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.2.8</version>
</dependency>

lombok工具

介绍

概述: Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率.

注解作用
@Getter/@Setter为所有的属性提供get/set方法
@ToString会给类自动生成易阅读的tostring方法
@EqualsAndHashCode根据类所拥有的非静态字段自动重写equals方法和hashCode方法
@Data提供了更综合的生成代码功能 (@Getter + @Setter + @ToString + @EqualsAndHashCode)
@NoArgsConstructor为实体类生成无参的构造器方法
@AllArgsConstructor为实体类生成除了static修饰的字段之外带有各参数的构造器方法

maven坐标

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

案例

//@Getter
//@Setter
//@ToString
//@EqualsAndHashCode
@Data
@NoArgsConstructor // 无参构造
@AllArgsConstructor // 有参构造
public class User {
    private Integer id;
    private String name;
    private Short age;
    private Short gender;
    private String phone;
}

来源

黑马程序员. JavaWeb开发教程

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

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

相关文章

flume 进阶 自定义source(十)

需求 每隔五秒输出5次数据 pom文件 <dependencies><dependency><groupId>org.apache.flume</groupId><artifactId>flume-ng-core</artifactId><version>1.9.0</version></dependency></dependencies>代码 pac…

NETALAND惊艳上线,平行云助力元宇宙大玩家网易闪亮登场

近日&#xff0c;网易传媒旗下全新的泛娱乐体验空间NETALAND惊艳上线。NETALAND以其近乎于电影质感的场景&#xff0c;趣味的互动模式&#xff0c;流畅、沉浸的交互体验&#xff0c;给营销行业带来了一份新答卷。 NETALAND整合了网易传媒强大的元宇宙技术和丰富的内容生态&…

【Jenkins】新手安装、运行Jenkins(详细教学)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、…

【c语言】Union共用体

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

如何将 O2OA 集成到企业微信实现微信办公

O2OA 平台拥有配套的原生开发的安卓和 IOS 移动 APP&#xff0c;可以以自建应用的方式集成到企业微信&#xff0c;同步企业微信的企业通讯录作为本地组织人员架构&#xff0c;并且可以将待办等通知直接推送到企业微信进行消息提醒。本篇主要介绍如何将 O2OA 集成到企业微信实现…

4年外包出来人废了,5次面试全挂....

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;毕业于普通二本院校非计算机专业&#xff0c;18年跨专业入行测试&#xff0c;第一份工作在湖南某软件公司&#xff0c;做了接近4年的外包测试工程师&#xff0c;今年年初&#xff0c;感觉自己不能够再这样下去了&…

开心档之Java 抽象类

Java 抽象类 目录 Java 抽象类 抽象类 Employee.java 文件代码&#xff1a; AbstractDemo.java 文件代码&#xff1a; 继承抽象类 Salary.java 文件代码&#xff1a; AbstractDemo.java 文件代码&#xff1a; 抽象方法 Salary.java 文件代码&#xff1a; 抽象类总结…

2023海外网红营销策略揭秘:打造品牌曝光的7大技巧

随着全球互联网的普及&#xff0c;海外网红营销成为越来越多出海品牌的首选策略之一。然而&#xff0c;要在海外市场成功打造品牌形象并吸引目标受众并不容易。本文Nox聚星将详细介绍几项关键技巧&#xff0c;帮助您在海外市场中成功实施网红营销。 一、深入了解目标市场 在海…

如何避免软件bug?优化你的测试流程和设计用例方法就对啦!

目录 引言 一、测试流程 二、测试用例设计方法 等价类 边界值 场景设计法 判定表 错误推测法 结语 引言 对于大多数软件开发者和测试人员而言&#xff0c;避免出现bug是一项非常重要的任务。但是&#xff0c;在实际的开发过程中&#xff0c;我们经常容易忽略一些细节…

【Spring Boot】Spring Boot配置文件与Spring Boot日志文件

文章目录 1. 什么是Spring Boot&#xff1f;2. 如何创建Spring Boot项目&#xff1f;3. 验证Spring Boot项目的创建3.1 补充添加依赖3.2 代码示例 4. Spring Boot配置文件4.1 配置文件的作用4.2 配置文件的格式4.2.1 properties的语法4.2.2 yml的语法4.2.3 properties与yml的对…

性能测试工具的选购细节

近年来&#xff0c;随着软件技术的不断发展&#xff0c;为了保证软件系统的稳定性、可靠性和高效性&#xff0c;在软件开发过程中越来越多地使用性能测试工具。但是&#xff0c;如何选择一款合适的性能测试工具并不是一件容易的事情。下面是一些性能测试工具的选购细节&#xf…

Python学习笔记 - 探索5种数据类型

Python作为一门易学且功能强大的编程语言&#xff0c;吸引了众多编程爱好者。在学习Python的过程中&#xff0c;了解其数据类型是十分重要的。这里将向大家介绍Python中的五种常见数据类型&#xff0c;分别是&#xff1a;整数、浮点数、字符串、列表和字典&#xff0c;并且将通…

【华为新版模拟器eNSP Lite实验界面一览,赶紧来学习】

eNSP Lite是华为新开发的数据通信领域网络环境模拟软件&#xff0c;用于支持数通领域的考试认证、网络环境模拟和技术学习而开发的新版模拟器。相比于旧版模拟器eNSP的本地部署模式&#xff0c;新版模拟器eNSP Lite基于云端部署的模式使得软件在使用的过程中变得更加灵活&#…

使用Socket技术进行数据传输、传输文件;浏览器访问Socket服务器

文章目录 计算机网络基础IP地址和端口TCP和 UDP Socket技术使用Socket进行数据传输使用Socket传输文件使用浏览器访问Socket服务器 计算机网络基础 利用通信线路和通信设备&#xff0c;将地理位置不同的、功能独立的多台计算机互连起来&#xff0c;以功能完善的网络软件来实现…

Visual Studio 2022 v17.6 正式发布

Visual Studio 17.6 正式发布&#xff0c;这个最新版本提供了一系列强大的工具和功能&#xff0c;旨在使你能够制作出最先进的应用程序。 提高生产力 通过 Visual Studio 2022&#xff0c;目标是帮助你在更短的时间内完成 IDE 内的所有开发任务&#xff0c;在这个版本中&…

Vue3 QQ登录

Vue3 QQ登录 开发前需要去 QQ互联平台申请认证&#xff0c;创建应用 拿到对应的APPID、APPKey 一、引用QQjsdk 1、可直接引用 QQjsdk //绑定对应的APPID跟页面回调地址 <script type"text/javascript" charset"utf-8" src"https://connect.qq…

图像识别和计算机视觉:如何应用人工智能技术实现自动化检测和识别

章节一&#xff1a;引言 在数字化时代&#xff0c;图像数据成为了我们日常生活中不可或缺的一部分。然而&#xff0c;随着图像数据的急剧增加&#xff0c;传统的手动处理和分析方法已经无法满足我们的需求。这就引出了图像识别和计算机视觉技术的重要性。本文将介绍人工智能技…

程序员降薪40%去国企,只因要35岁了!值得吗?

说到程序员&#xff0c;大家首先想到的就是“高薪”&#xff0c;“有实力”&#xff0c;程序员是个比较吃香的职业&#xff0c;发展前景和薪资待遇都非常可观。 但是在程序员的世界里&#xff0c;一直有一个传言&#xff0c;35岁是技术人的天花板。这个观点&#xff0c;无意中…

君正X2000 Linux SDK

一、测试所用的硬件 深圳君正开发板&#xff1a;PD_X2000_EVB_CORE_V1P1 二、SDK源码下载 参考君正官方教程&#xff1a;君正全平台linux源码同步教程&#xff08;除X1830人脸识别板&#xff09;_君正a1n linux_北京君正的博客-CSDN博客 教程中要求的系统为Ubuntu20.4&#…

批量提取某音文案

牙叔教程 简单易懂 我想学习某个人的文案, 怎么把它的文案全下载下来? 批量下载视频和音频批量音频转文字 下载视频和音频 我在github找到的是这个仓库 GitHub - Johnserf-Seed/TikTokDownload: 抖音去水印批量下载用户主页作品、喜欢、图文、音频 经过实际测试, 可以使用,…