Spring(四)---Spring Jdbc Template基本使用

2023-05-16

1、概述
JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架
为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作
nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。
2、开发步骤
①导入spring-jdbc和spring-tx坐标
②创建数据库表和实体
③创建JdbcTemplate对象
④执行数据库操作
3、快速入门
导入spring-jdbc和spring-tx坐标

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

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.30</version>
    </dependency>
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.1</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.1.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.1.5.RELEASE</version>
    </dependency>
  </dependencies>

创建数据库表和实体

字段类型长度主键
namevarchar50
moneydouble0
实体类
package com.demo.domain;
public class Account {
  private String name;
  private double money;
  public String getNa me() {
    return name;
 }
  public void setName(String name) {
    this.name = name;
 }
  public double getMoney() {
    return money;
 }
  public void setMoney(double money) {
    this.money = money;
 }
  @Override
  public String toString() {
    return "Account{" +
        "name='" + name + '\'' +
        ", money=" + money +
        '}';
 }
}

创建JdbcTemplate对象
执行数据库操作

@Test
  //测试JdbcTemplate开发步骤
  public void test1() throws PropertyVetoException {
    //创建数据源对象
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    dataSource.setDriverClass("com.mysql.jdbc.Driver");
    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
    dataSource.setUser("root");
    dataSource.setPassword("root");
    JdbcTemplate jdbcTemplate = new JdbcTemplate();
    //设置数据源对象 知道数据库在哪
    jdbcTemplate.setDataSource(dataSource);
    //执行操作
    int row = jdbcTemplate.update("insert into account values(?,?)", "test",
1000);
    System.out.println(row);
 }

4、JdbcTemplate基本使用-spring产生模板对象分析(理解)
我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在
Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中,然后通过Spring容器获得
JdbcTemplate对象来执行操作。
5、JdbcTemplate基本使用-spring产生模板对象代码实现(应用)
在applicationContext.xml文件中配置

<!--数据源对象-->
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    <property name="jdbcUrl" value="jdbc:mysql:///test"></property>
    <property name="user" value="root"></property>
    <property name="password" value="root"></property>
  </bean>
  <!--jdbc模板对象-->
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
  </bean>

测试代码

@Test
  //测试Spring产生jdbcTemplate对象
  public void test2() throws PropertyVetoException {
    ApplicationContext app = new
ClassPathXmlApplicationContext("applicationContext.xml");
    JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
    int row = jdbcTemplate.update("insert into account values(?,?)", "lisi",
5000);
    System.out.println(row);
 }

6、JdbcTemplate基本使用-spring产生模板对象代码实现(抽取jdbc.properties)(应用)
将数据库的连接信息抽取到外部配置文件中,和spring的配置文件分离开,有利于后期维护
建立jdbc.properties文件,然后添加以下内容

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root

配置文件修改为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
  <!--加载jdbc.properties-->
  <context:property-placeholder location="classpath:jdbc.properties"/>
  <!--数据源对象-->
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
  </bean>
  <!--jdbc模板对象-->
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
  </bean>
</beans>

7、JdbcTemplate基本使用-常用操作-更新操作(应用)

package com.demo.test;
import com.demo.domain.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTemplateCRUDTest {
  @Autowired
  private JdbcTemplate jdbcTemplate;
 
//修改更新
  @Test
  public void testUpdate(){
    jdbcTemplate.update("update account set money=? where
name=?",10000,"test");
 }
//删除
  @Test
  public void testDelete(){
    jdbcTemplate.update("delete from account where name=?","tom");
 }
}

8、JdbcTemplate基本使用-常用操作-查询操作(应用)

package com.demo.test;
import com.demo.domain.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTemplateCRUDTest {
  @Autowired
09-JdbcTemplate基本使用-知识要点(理解,记忆)
①导入spring-jdbc和spring-tx坐标
②创建数据库表和实体
③创建JdbcTemplate对象
④执行数据库操作
声明式事务控制
1. 编程式事务控制相关对象
  private JdbcTemplate jdbcTemplate;
 
//聚合查询
  @Test
  public void testQueryCount(){
    Long count = jdbcTemplate.queryForObject("select count(*) from account",
Long.class);
    System.out.println(count);
 }
//查询一个
  @Test
  public void testQueryOne(){
    Account account = jdbcTemplate.queryForObject("select * from account
where name=?", new BeanPropertyRowMapper<Account>(Account.class), "tom");
    System.out.println(account);
 }
//查询所有
  @Test
  public void testQueryAll(){
    List<Account> accountList = jdbcTemplate.query("select * from account",
new BeanPropertyRowMapper<Account>(Account.class));
    System.out.println(accountList);
 }
}

9、JdbcTemplate基本使用-知识要点(理解,记忆)
①导入spring-jdbc和spring-tx坐标
②创建数据库表和实体
③创建JdbcTemplate对象

JdbcTemplate jdbcTemplate = newJdbcTemplate();
   jdbcTemplate.setDataSource(dataSource);

④执行数据库操作

更新操作:
 jdbcTemplate.update (sql,params)
查询操作:
 jdbcTemplate.query (sql,Mapper,params)
jdbcTemplate.queryForObject(sql,Mapper,params)

声明式事务控制
2. 编程式事务控制相关对象
1.1 PlatformTransactionManager
PlatformTransactionManager 接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方
法。
在这里插入图片描述
注意:
PlatformTransactionManager 是接口类型,不同的 Dao 层技术则有不同的实现类,例如:Dao 层技术
是jdbc 或 mybatis 时:org.springframework.jdbc.datasource.DataSourceTransactionManager
Dao 层技术是hibernate时:org.springframework.orm.hibernate5.HibernateTransactionManager
1.2 TransactionDefinition
TransactionDefinition 是事务的定义信息对象,里面有如下方法:
在这里插入图片描述
3. 事务隔离级别
1、设置隔离级别,可以解决事务并发产生的问题,如脏读、不可重复读和虚读。
ISOLATION_DEFAULT
ISOLATION_READ_UNCOMMITTED
ISOLATION_READ_COMMITTED
ISOLATION_REPEATABLE_READ
ISOLATION_SERIALIZABLE
2. 事务传播行为
REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务
中。一般的选择(默认值)
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)
MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常
REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
NEVER:以非事务方式运行,如果当前存在事务,抛出异常
NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 REQUIRED 类似
的操作
超时时间:默认值是-1,没有超时限制。如果有,以秒为单位进行设置
是否只读:建议查询时设置为只读
1.3 TransactionStatus
TransactionStatus 接口提供的是事务具体的运行状态,方法介绍如下。
在这里插入图片描述
1.4 知识要点
编程式事务控制三大对象
PlatformTransactionManager
TransactionDefinition
TransactionStatus
2 基于 XML 的声明式事务控制
2.1 什么是声明式事务控制
Spring 的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中
声明,用在 Spring 配置文件中声明式的处理事务来代替代码式的处理事务。
声明式事务处理的作用
事务管理不侵入开发的组件。具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也
应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管
理策划的话,也只需要在定义文件中重新配置即可
在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重
新编译,这样维护起来极其方便
注意:Spring 声明式事务控制底层就是AOP。
2.2 声明式事务控制的实现
声明式事务控制明确事项:
谁是切点?
谁是通知?
配置切面?
①引入tx命名空间

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:tx="http://www.springframework.org/schema/tx"
②配置事务增强
③配置事务 AOP 织入
④测试事务控制转账业务代码
2.3 切点方法的事务参数的配置
   xsi:schemaLocation="
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

②配置事务增强

<!--平台事务管理器-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"></property>
</bean>
<!--事务增强配置-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
    <tx:method name="*"/>
  </tx:attributes>
</tx:advice>

③配置事务 AOP 织入

<!--事务的aop增强-->
<aop:config>
  <aop:pointcut id="myPointcut" expression="execution(*
com.demo.service.impl.*.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"></aop:advisor>
</aop:config>

④测试事务控制转账业务代码

@Override
public void transfer(String outMan, String inMan, double money) {
  accountDao.out(outMan,money);
  int i = 1/0;
  accountDao.in(inMan,money);
}

2.3 切点方法的事务参数的配置

<!--事务增强配置-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
    <tx:method name="*"/>
  </tx:attributes>
</tx:advice>

其中,tx:method 代表切点方法的事务参数的配置,例如:

<tx:method name="transfer" isolation="REPEATABLE_READ" propagation="REQUIRED"
timeout="-1" read-only="false"/>

name:切点方法名称
isolation:事务的隔离级别
propogation:事务的传播行为
timeout:超时时间
read-only:是否只读
2.4 知识要点
声明式事务控制的配置要点
平台事务管理器配置
事务通知的配置
事务aop织入的配置
3 基于注解的声明式事务控制
3.1 使用注解配置声明式事务控制

  1. 编写 AccoutDao
@Repository("accountDao")
public class AccountDaoImpl implements AccountDao {
  @Autowired
  private JdbcTemplate jdbcTemplate;
  public void out(String outMan, double money) {
    jdbcTemplate.update("update account set money=money-? where
name=?",money,outMan);
 }
  public void in(String inMan, double money) {
    jdbcTemplate.update("update account set money=money+? where
name=?",money,inMan);
 }
}
  1. 编写 AccoutService
@Service("accountService")
@Transactional
public class AccountServiceImpl implements AccountService {
  @Autowired
  private AccountDao accountDao;
  @Transactional(isolation = Isolation.READ_COMMITTED,propagation =
Propagation.REQUIRED)
  public void transfer(String outMan, String inMan, double money) {
    accountDao.out(outMan,money);
    int i = 1/0;
    accountDao.in(inMan,money);
 }
}
  1. 编写 applicationContext.xml 配置文件
<!—之前省略datsSource、jdbcTemplate、平台事务管理器的配置-->
<!--组件扫描-->
<context:component-scan base-package="com.demo"/>
<!--事务的注解驱动-->
<tx:annotation-driven/>

3.2 注解配置声明式事务控制解析
①使用 @Transactional 在需要进行事务控制的类或是方法上修饰,注解可用的属性同 xml 配置方式,
例如隔离级别、传播行为等。
②注解使用在类上,那么该类下的所有方法都使用同一套注解参数配置。
③使用在方法上,不同的方法可以采用不同的事务参数配置。
④Xml配置文件中要开启事务的注解驱动<tx:annotation-driven />
3.3 知识要点
注解声明式事务控制的配置要点
平台事务管理器配置(xml方式)
事务通知的配置(@Transactional注解配置)
事务注解驱动的配置 tx:annotation-driven/

目录结构
在这里插入图片描述

参考:https://www.bilibili.com/video/BV1WZ4y1P7Bp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring(四)---Spring Jdbc Template基本使用 的相关文章

  • Corn Maze S

    题目 xff1a This past fall Farmer John took the cows to visit a corn maze But this wasn t just any corn maze it featured se
  • csp-m4

    反思 此次模测做的不太理想 xff0c t1因为一个循环条件写错导致只拿到了3个点的分数 xff0c t2是读题不仔细没有搞清输出的数据同时对于数据范围估计也产生了错误 xff0c 导致爆0 xff0c t4看到树就犯怵的习惯还有待克服 x
  • anaconda重装后缺失大量文件夹及各种文件并且安装完毕后在菜单栏找不到快捷方式

    项目场景 xff1a anaconda是python程序设计中不可缺少的一个工具 问题描述 anaconda的最新版本重装后 xff0c 只有conda meta Lib Library pkgs等几个文件夹 xff08 没有截图 xff0
  • 如何解决在Linux CLI终端界面中汉字方块乱码

    解决Linux 纯命令界面下中文是方块乱码的问题 最近在学习Linux安全并给磁盘LUKS加密时 xff0c 发现在telinit 1模式下 xff0c 原本正常的中文字符均变成了方块乱码 xff08 如下图 xff09 xff0c 这使得
  • 基于大数据平台的毕业设计

    前言 2022年最新大数据毕设文章 xff1a 基于大数据平台的毕业设计01 xff1a 基于Docker的HDP集群搭建 最近有很多人问我 xff0c 大数据专业有什么好的毕设项目 xff0c 我就简单的回复了一下 也有直接问我要源码的
  • DM9000在TQ2440移植中的地址内容

    2 2 修改宏定义 三个地址相关宏定义是参考别的单板配置复制过来的 xff0c 肯定不能用 xff0c 查看S3C2440芯片手册和原理图 xff0c 确定这三个地址 首先是基地址CONFIG DM9000 BASE xff0c 在原理图中
  • node学习笔记

    阶段一 1 初始Node js javascript 运行环境 1 2 Node js中的javacript 运行环境 1 3 Node js环境安装 百度 1 4 node js 执行javaScript 代码 2 fs文件系统模块 2
  • SQL实验三 select语句查询操作

    SQL select查询实验 一 实验目的 了解查询的概念和方法掌握SQL Server集成管理器查询子窗口中执行select操作的方法掌握select语句在单表查询中的应用掌握select语句在多表查询中的应用掌握select语句在复杂查
  • [编程题]字母交换

    题目描述 xff1a 字符串S由小写字母构成 xff0c 长度为n 定义一种操作 xff0c 每次都可以挑选字符串中任意的两个相邻字母进行交换 询问在至多交换m次之后 xff0c 字符串中最多有多少个连续的位置上的字母相同 xff1f 输入
  • 阿里云域名备案问题 注销主体步骤

    阿里云域名备案问题 注销主体步骤 注意 xff1a 当主体下只有一个域名时 xff0c 若在阿里云备案平台按 注销网站 xff0c 主体会成为空壳主体 xff0c 阿里云备案平台不会再显示主体了 xff0c 接下来就按不了 注销主体 操作
  • jenkins安装和配置(一):ubuntu 20.04 jenkins安装

    参考 Installing Jenkins 参考 How to Install and Configure Jenkins on Ubuntu 20 04 LTS 一 安装前提 Java 8 or Java 11 are required
  • 泛型 知识点 总结

    为什么要有泛型 泛型实质上就是使程序员定义安全的类型 在没有出现泛型之前 java也提供了对Objct的引用 34 任意化 34 操作 这种 34 任意化 34 操作就是对Object引用进行向下转型及向上转型操作 但是某些强制类型转换的错
  • 手把手教你centos8/rhel8使用国内源安装virtualbox If your system is using EFI Secure Boot you may need to

    这两天装virtualbox的时候又遇到问题了 xff0c 它显示这个错误 xff1a If your system is using EFI Secure Boot you may need to sign the kernel modu
  • gitlab配置

    在Ubuntu下安装gitlab ce 首先全程使用root进行配置 更新apt源 apt update 安装依赖项 Postfix Configuration 选择 No configuration 就好 apt span class t
  • vs2019更新后的设置问题for(

    最近不小心把vs2019更新了一下 xff0c 虽然增加了很多新功能 xff0c 但是对于我来说最大的意义在于它的字体颜色好像更丰富了 xff0c 其他的也不太能用得到 但是更新之后 xff0c 写for循环的时候发现for i 61 0
  • 插入最少的字符,构造回文串

    题目 xff1a 题目链接 给一个字符串 xff0c 在任意的位置插入一些字符 xff0c 使得这个字符串成为回文串 xff0c 最少需要插入多少个字符 ps xff1a 有一个和这个题很像的题 xff0c 都是插入最少的字符构造回文串 x
  • Linux常用命令大全

    Linux常用命令大全 一 进程管理 xff08 1 xff09 Linux中Kill进程的方法 二 系统信息三 关机 系统的关机 重启以及登出 四 文件和目录五 文件搜索六 挂载一个文件系统七 磁盘空间八 系统负载 top九 用户和群组十
  • 字符的最少变换次数,并查集

    题意 xff1a 给两个字符串a xff0c b a合和b中的字符都是前20个字母 xff08 a t xff09 xff0c a需要进行一些变换 xff0c 使得a等于b 对于每一次变换 xff1a 选取a中相同的字符 xff0c 然后把
  • 并查集 判断无向图是否有环

    无向图中 xff0c 给定一些边 xff0c 然后判断这些边组成的图是否有环 注意这个方法必须保证没有输入重边 对于一条边用 a b 表示 xff0c 然后把a xff0c b加入到并查集中 如果又加入了一条边 b c xff0c 那么如果
  • 彻底地删除垃圾软件

    当不小心下载了垃圾软件 xff0c 想删除掉 xff0c 但是又删不掉 xff0c 或者是删不干净的一些办法 首先 xff0c 我们应该把软件关掉 xff0c 让它停止运行 然后找到软件所在的文件夹 xff0c 把一些能够删除的文件都删除掉

随机推荐

  • Aizu_GRL_1_c floyd算法,判断负环的题

    这题应该是很简单的 xff0c 但是我wa了好久 看了别人的博客 xff0c 还是想不明白哪有问题 xff0c 我发现别人的ac代码要判断一下 xff0c mp i k 和mp k jj 是不是等于inf xff0c 我觉得判不判断没啥区别
  • codeforces 1165D(求因子的问题)

    题意 xff1a 给出除了1和它本身之外的所有因子 xff0c 找出最小的这个数 xff0c 如果有冲突的数就输出 1 思路 xff1a 我是当时没做出来看了大佬的博客才知道 https www cnblogs com fengxunlin
  • cmd 复制文件语法不正确

    复制文件到另一个文件夹 xff1a 语法格式 xff1a copy 原文件的路径和名称 目标文件夹的路径 说语法不正确的时候可能是路径中有空格 比如C Program Files x86 CodeBlocks share CodeBlock
  • 关于斜率的计算

    codeforces 842A 从L到R中选取一个数作为分子 xff0c 从x到y中选取一个数作为分母 xff0c 给一个数k 问有没有可能这个分数等于k 这题也是有够坑的 xff0c 用二分精确的判断要超时 xff0c 但是只是看在不在范
  • c语言线性表实现电话簿(学生信息)

    c语言线性表实现电话簿 span class token macro property span class token directive keyword include span span class token string lt s
  • vsc code-runner插件运行python文件,解释器更改为ananconda

    code runner刚下载下来的默认解释器是系统自带的 xff0c 并不是anaconda的 选择文件 首选项 找到code runner executor map 找到python的命令 xff0c 改为自己的解释器位置即可
  • NT_STATUS_ACCESS_DENIED listing \*

    在centos8上配了个SAMBA与windows共享文件 访问共享目录出现 NT STATUS ACCESS DENIED listing xff0c smb gt span class token operator span span
  • RocketMQ发送普通消息的所有方法以及代码示例

    RocketMQ发送普通消息的所有方法以及代码示例 一 使用RocketMQTemplate发送消息 xff08 整合Springboot xff09 xff08 1 xff09 void send Message lt gt messag
  • C语言总结day01

    day01 1 C语言标识符 C语言标识符需满足以下条件 只能由英文字母 26个英文字母 xff0c 包括大小写即共52个 数字 0 9 和下划线组成长度为1 32必须以英文字母或下划线开头 2 C语言风格 C语言严格区分英文字母的大小写C
  • C语言总结day02

    day02 1 运算符 算术运算符 单目运算符 xff1a 43 正 xff1b 负 xff1b 双目运算符 xff1a 这三个同级 gt 43 这两个同级 注意 xff1a 前边三个的优先级大于后边的两个 xff1b 双目运算符两边运算数
  • C语言总结day03

    day03 1 数据的输入输出 数据的输出 xff1a 从计算机向输出设备 如显示器 打印机等 输出数据称为输出 数据的输入 xff1a 从输入设备 如键盘 磁盘 光盘 扫描仪等 向计算机输入数据称为输入 C语言函数库中有一批 34 标准输
  • C语言总结day04

    day04 1 int a n 是错误的 C语言中不允许对数组的大小作动态定义 2 字符数组的初始化 char a 61 I am Student char a 10 利用for语句对每个进行初始化 3 字符数组的输入和输出输入 char
  • C语言总结day06

    day06 1 定义和使用结构体变量 C语言允许用户建立由不同类型数据组成的组合型的数据结构 xff0c 它称为结构体 声明格式 struct 结构体名 成员列表 定义结构体类型变量 struct 结构体名 结构体变量 在声明类型的同时定义
  • C语言总结day07

    day07 一些概念理解 1 为什么使用指针 每一个编程语言都使用指针C 43 43 将指针暴露给了 用户 xff08 程序员 xff09 xff0c 而java和C 等语言则将指针隐蔽起来了 2 指针和引用的区别 本质 xff1a 引用是
  • C语言总结day05

    day05 1 函数间可以相互调用 xff0c 但是不能调用main函数 xff0c main函数是被操作系统调用的 2 数组作为函数参数 数组元素可以作函数参数 值传递 注意 xff1a 数组元素可以用作函数实参 xff0c 不能用作形参
  • SSM-Spring入门

    Spring学习 1 Spring简介 Spring是什么 Spring是分层的Java SE EE应用full stack轻量级开源框架 xff0c 是以loC Inverse Of Contorl 反转控制 和AOP Aspect Or
  • SSM-Spring学习(二)

    Spring IoC和DI注解开发 Spring配置数据源 数据源 xff08 连接池 xff09 介绍 xff1a 数据库连接池概念 百度百科 xff1a 数据库连接池负责分配 管理和释放数据库连接 xff0c 它允许应用程序重复使用一个
  • SSM-Spring(三)-AOP

    简介 什么是 AOP AOP 为 span class token class name Aspect span span class token class name Oriented span span class token clas
  • RocetMQ发送顺序消息的所有方法以及代码示例

    RocetMQ发送顺序消息的所有方法以及代码示例 一 使用RocketMQTemplate发送顺序消息 xff08 1 xff09 SendResult syncSendOrderly String destination Message
  • Spring(四)---Spring Jdbc Template基本使用

    1 概述 JdbcTemplate是spring框架中提供的一个对象 xff0c 是对原始繁琐的Jdbc API对象的简单封装 spring框架 为我们提供了很多的操作模板类 例如 xff1a 操作关系型数据的JdbcTemplate和Hi