Spring -- spring template Spring的JDBC(一)

GPS从入门到放弃(一) --- GPS基础原理 GPS从入门到放弃(一) — GPS基础原理 GPS,全称Global Positioning System,已经广泛应用于我们的日常生活中了,现在的智能手机 里都会自带GPS定位功能。这是一个美国的全球定位系统,虽然我们现在也有北斗了,但毕竟GPS搞的早,所以先从它开始研究起。 整个GPS系统分三大部分: 地面站 卫星 接收机 地面站负责监控。它们通过接收、测量各个卫星信号,计算卫星的运行轨... 阅读详情

使用Spring JDBC,你只需要做四个工作:
1)定义连接参数:也就是定义url,driver,user,password这个几个参数,一般我们会用一个jdbc.properties文件来配置。
2)指定要执行那个sql语句:项目中要用到什么样的SQL语句,Spring是肯定不知道的,只能我们自己设置的。
3)使用PreparedStatement时需要参数,传递哪些参数肯定也是需要我们自己设置的。
4)迭代结果集的过程需要做那些事情,肯定也是需要我们自己写的。


JdbcTemplate 的使用需要有 DataSource 的支持,所以在配置文件中,我们首先要配置一个 DataSource ,
然后在将这个 DataSource 配置到 JdbcTemplate 里。
接着将 JdbcTemplate 配置进 DAO 层,最后将 DAO 配置进 Model 层。


首先是整个案例的结构.....

然后先看配置文件吧...


beans.xml

<?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">

    <context:component-scan base-package="org.springframework.docs.test" />
    <context:property-placeholder location="jdbc.properties"/>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="userDao" class="com.dao.impl.UserDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>

    <bean id="userService" class="com.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>
</beans>

jdbc.properties

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


model

package com.model;

/**
 * Created by cyx on 2016/3/5.
 */
public class User {
    private int id;
    private String name;
    private int age;

    public User() {

    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

userDao

package com.dao;

import com.model.User;

import java.util.List;

/**
 * Created by cyx on 2016/3/5.
 */
public interface UserDao {
    public void add(User user);

    public void update(User user);

    public void delete(int id);

    public List<User> queryAll();
}

userDaoimpl userDao的实现

package com.dao.impl;

import com.dao.UserDao;
import com.model.User;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;

/**
 * Created by cyx on 2016/3/5.
 */
public class UserDaoImpl implements UserDao {

    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }


    public void add(User user) {
        String sql = "insert into user_t (name,age) values (?,?)";
        Object[] args = {user.getName(), user.getAge()};
        int res = jdbcTemplate.update(sql, args);
        if (res == 1) {
            System.out.println("add success");
        }
    }

    public void update(User user) {
        String sql = "update user_t set name = ?, age = ? where id = ?";
        Object[] args = {user.getName(), user.getAge(), user.getId()};
        int res = jdbcTemplate.update(sql, args);
        if (res == 1) {
            System.out.println("update success");
        }
    }

    public void delete(int id) {
        String sql = "delete from user_t where id = ?";
        int res = jdbcTemplate.update(sql, id);
        if (res == 1) {
            System.out.println("delete success");
        }
    }

    public List<User> queryAll() {
        String sql = "select * from user_t";
        final List<User> list = new ArrayList<User>();
        jdbcTemplate.query(sql, new RowCallbackHandler() {
            public void processRow(ResultSet rs) throws SQLException {
                User u = new User();
                u.setId(rs.getInt("id"));
                u.setName(rs.getString("name"));
                u.setAge(rs.getInt("age"));
                list.add(u);
            }
        });
        return list;
    }

}

userService

package com.service;

import com.model.User;

import java.util.List;

/**
 * Created by cyx on 2016/3/5.
 */
public interface UserService {
    public void add(User user);

    public void update(User user);

    public void delete(int id);

    public List<User> queryAll();
}


userService 的实现 userServiceImpl

package com.service.impl;

import com.dao.UserDao;
import com.model.User;
import com.service.UserService;

import java.util.List;

/**
 * Created by cyx on 2016/3/6.
 */
public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add(User user) {
        this.userDao.add(user);
    }

    public void update(User user) {
        this.userDao.update(user);
    }

    public void delete(int id) {
        this.userDao.delete(id);
    }

    public List<User> queryAll() {
        return this.userDao.queryAll();
    }
}


Test 测试代码

package com.test;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.model.User;
import com.service.UserService;

public class jdbcTemplateTest {
	private static ApplicationContext ac;
	
	static {
		ac = new ClassPathXmlApplicationContext("beans.xml");
	}
	
	@Test
	public void testAdd(){
		UserService us = (UserService)ac.getBean("userService");
		us.add(new User("2b",22));
	}
	
	@Test
	public void testUpdate(){
		UserService us = (UserService)ac.getBean("userService");
		us.update(new User(1,"2b",11));
	}
	
	@Test
	public void testdelete(){
		UserService us = (UserService)ac.getBean("userService");
		us.delete(1);
	}
	
	@Test
	public void testQueryAll(){
		UserService us = (UserService)ac.getBean("userService");
		List<User> list = us.queryAll();
		for(User u :list){
			System.out.println(u.getId()+" , "+u.getName()+" , "+u.getAge());
		}
	}
}





参考文章: http://item.congci.com/item/spring-jdbctemplate-shili

calibre QRC提取寄生参数 typical将上面的文件QCI_flow里面的文件 在Cp 到当前 ,其实应该是某几个文件,但是我给忘记了 就全cp过来了 ,无影响,不过也希望大佬指正。 阅读详情

相关推荐

U盘 未知USB设备 设定地址失败 由于该设备有问题Windows 已将其停止(代码 43) 终极解决方案(做过系统装机盘而无法解决的必看)

U盘由于该设备有问题Windows 已将其停止(代码 43) 终极解决方案 我们在使用U盘的时候偶尔会碰到下列情况 一般是因为传输数据的过程中,死机或未响应直接断点或拔掉设备导致的,U盘再次插上之后出现设定地址失败。无法再次读取设备的数据。 解决方案: 首先请确认出现该情况不是因为你摔了U盘或接口处产生断裂这种物理损伤导致的!!! 首先请确认出现该情况不是因为你摔了U盘或接口处产生断裂这种物理损...

qq_39123987的博客 13万+

spring 配置<context:component-scan base-package=” ”/>

在context中配置 如:在base-package指明一个包: 表明cn.gacl.java包及其子包中,如果某个类的头上带有特定的注解 @Component,@Repository,@Service,@Controller,就会将这个对象作为Bean注册进Spring容器。 在中指定多个包: ,cn.edu.service.impl,cn.edu.action"/>

jiangxindu1的专栏 3万+

伺服电机入门01

编码器输出 旋转信号 , 接收端: 使用ADC 捕捉旋转信号 ,转成数字信号,驱动器得到数字处理, 因为信号量是模拟信号, mcu mpu 等芯片通常内部处理是数字,通过adc 得到数字cpu 才能识别 传输过来的pos 等信息。IPM 芯片示例, IRAM256A 这个芯片已经停产,有换新的,,下面示例来自stmbl 高功率方案,4 步进电机 有全步控制,半步控制 ,微步控制,FOC控制,步进电机也是可以做伺服系统的。以下面几种信号是可以细分,也就是通过细分增加编码器的分辨率,

qq_25160559的博客 969

关于spring中context:component-scan base-package="" 写法

1.通配符形式 &lt;context:component-scan base-package=“com.*” /&gt; 2.全路径 &lt;context:component-scan base-package=“com.test” /&gt; 3.AspectJ語法 &lt;context:component-scan base-package=“org.example…Service+" ...

weixin_43712788的博客 4593

QCC308X/518X/309X加LDAC解码

QCC308X/518X/309X加LDAC解码。

Alex_886的博客 6609

Java 开发打飞机小游戏(附完整源码)

上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很容易理解,并且注释写的很清楚了,还有问题,自己私下去补课学习。 完整代码 敌飞机 import java.util.Random; 敌飞机: 是飞行物,也是敌人 public class Airplane extends FlyingObject implements Enemy {

一只独孤的程序猿 1万+

Spring Boot简明教程之数据访问(一):JDBC Template

Spring Boot简明教程之数据访问(一):JDBC Template 文章目录Spring Boot简明教程之数据访问(一):JDBC Template创建项目:准备数据库环境编写配置文件创建数据库创建Controller总结源码地址联系作者 我们在之前已经介绍了有关Spring Boot对于Web开发的一些支持,但是如果整个应用要想实现动态的数据交换,对于数据库的操作是必不可少的。本文将介...

Newtol的博客 638

嵌套交叉验证的‘双循环’哲学:为什么你的模型评估总是不准?

本文深入探讨了嵌套交叉验证(Nested Cross-Validation)在机器学习模型评估中的关键作用,揭示了传统交叉验证方法存在的偏差问题。通过双重循环设计,嵌套交叉验证有效隔离数据,提供无偏评估,显著提升模型在真实场景中的性能预测准确性。文章还提供了工程实践中的优化策略和量化分析,帮助开发者在计算成本与评估精度之间找到平衡。

b3n4m5q6w7的博客 225

Spring之JDBC Template

学习目标 Spring之JDBC Template 一、开发步骤 导入坐标 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.9.RELEASE</version> </dependency> <dependenc

附子Jun的博客 227

Sigrity Power SI Model Extraction模式如何提取电源网络的S参数和阻抗操作指导(一)

34. 默认格式是BNP format格式,会被Sigrity识别的S参数文件,在仿真完成后,默认会在文件夹中生成bnp和ckt(MCP)文件,无需这步操作。由于port设置的ref Z是50ohm,实际上电源网络的阻抗是没有这么高的,所以S参数回损曲线是基本上全反射的一个状态。Sigrity PowerSI是频域电磁场仿真工具,以下图为例介绍如果用它观测电源的网络的S参数以及阻抗的频域曲线.42. Spice格式的加载进来图标是橙色的,BNP格式的图标是灰色的。

weixin_54787054的博客 1278

Plant Simulation 快速建模与布局(3)——自动生成的对象 代码“安全”删除管理

《PlantSimulation快速布局建模课程》教授利用SimTalk语言实现高效建模的技术要点,包括批量对象创建、阵列布局、属性管理及自动连接功能。重点讲解对象安全删除机制,通过existsObject检查对象存在性后使用deleteObject方法删除,避免程序报错。课程提供完整代码示例,展示如何通过循环结构实现矩阵布局对象的创建与安全删除,确保代码健壮性,显著提升建模效率。

qq_31964455的博客 116

在Spring JDBC 中获取自动生成的Key

方法,该方法支持检索数据库生成的主键。时在插入实体后获取自动生成的密钥的可能性。接口的一个实例作为第一个参数,另一个参数是。现在,让我们实现一个方法,该方法将使用。插入新记录并取回自动生成的密钥的可能性。JDBCTemplate 更新()在这个快速教程中,我们将探讨在使用。插入新记录并返回自动生成的。java.sql.准备语句。首先,我们需要在我们的。java.sql.连接的。持有者.getKey()弹簧启动器 jdbc。简单的 Jdbc 导入。简单 Jdbc 插入的。

allway2的博客 427

26. 如何给 SAP BTP Cloud Foundry 环境分配运行时内存

摘要:本文解答了SAP BTP Cloud Foundry环境中Space可用内存为0MB的问题。指出Space内存配额取决于Org配额分配,其计算方式为Org总配额减去所有运行中应用实例的内存预留总和。详细解释了SAP BTP的资源分配层级(Global account→Subaccount→Environment→Org→Space),并说明如何通过Global account的Entity Assignments查看Memory Plan配额分配(以GB为单位)。最后建议遇到问题的用户检查Subacc

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1262

扩展Spring系列(2) ---Spring对各种数据访问框架的集成机制

 作者:江南白衣            扩展Spring(2) ---Spring对各种数据访问框架的集成机制     何为数据框架集成。   数据访问框架原本好好的,Spring都干了什么呢?   一是用template类封装了数据框架那些资源获取和异常事务处理的废话代码,而且按照自己的意见给出一些增强函数。   二是将其纳入了Spring的声明式事务管理中。    对比Spring对Hiber

花钱的年华 1925

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java jdbc 链接pg_全合辑:Spring的数据库编程:大魏Java记16

数据库编程是互联网编程的基础,Spring框架为开发者提供了JDBC模板模式,即jdbcTemplate,它可以简化许多代码,但在实际应用中jdbcTemplate并不常用。工作更多的时候,用的是Hibernate框架和MyBatis框架进行数据库编程。Spring JDBC主要有两种实现方式传统Java JDBCSpring JdbcTemplate第一种方式比较基础,但复杂...

weixin_42365251的博客 409

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

DBUtils和Spring Jdbc Template

DBUtils和Spring Jdbc TemplateDbutilsDBUtils简介DbUtils类QueryRunner类ResultSetHandler接口开发步骤Jdbc TemplateJdbcTemplate简介JdbcTemplate主要提供以下四类方法JdbcTemplate的开发步骤 Dbutils DBUtils简介 commons-dbutils 是 Apache 组织...

SYJ_1835_LPM的博客 2420

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring jdbc Template

spring框架的核心思想就是构造一座对象的工厂,用户只需要发送一定的指令,工厂就可以把用户需要的对象通过配置文件组装好,返还给用户。 用户需要做的许多工作就简化成了写配置文件。     1、  常规的JDDC代码 :           Connection conn=null;           PrepareStatement ps=null;           ResultS

magic_may的专栏 571

Spring里配置的JDBC-Template最详细讲解

为什么要用JDBC-Template 可以简化持久代码,在持久层有很大用处,什么叫持久层,就是实现增删改除等功能的一个抽象层面,是和数据库直接打交道的层。为什么说可以简化持久代码呢,大家都知道JAVA传统JDBC的流程 首先创建加载驱动,通过加载驱动取得与数据库的连接,通过连接创建语句来实现增删改除。通过下面对比可以看出Template的具体简化作用 比如来一个查询结果 //传统 JDBC AP...

毛聿修的博客 3104

Java数据库连接—JDBC(JDBC详解、JDBC控制事务、C3P0连接池、Druid连接池、Spring JDBC-JDBC Template)

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。下面有部分截图希望能对大家有所帮助。

2401_84003809的博客 993

JdbcTemplate 和 mybatis 的对比

1. jdbcTemplate 是spring对 jdbc操作数据库进行的封装,使得开发者可以直接在java文件中 编写sql,无需配置xml文件。2. 简单效率快。

m0_67394006的博客 2252

Spring JDBC Template与事务管理:基于XML与注解的实战指南

本文深入解析Spring JDBC Template与事务管理的核心技术,结合XML配置与注解方式两种主流方案,通过转账案例完整演示数据库操作与事务管理的最佳实践。文章涵盖JDBC Template的核心用法、事务配置语法、常见问题及性能优化建议,帮助开发者快速掌握Spring在数据层的高效应用。

2401_84910501的博客 1351

Spring学习之《JDBC-template》

关于Spring-Template的一些总结,很久之前学习完JDBC就直接学习Mybatis了,今天突然想起来,就把这个拿出来学习了一把。 直接开始,不说废话 一,前置条件 关于spring.xml的相关配置 1.JDBC 2.自动扫描注释 spring.xml &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;beans xm...

berg_hang的博客 279

JDBC Template

JDBC Template 一.简化持久化操纵,Spring在JDBC API之上提供了JDBC Template组件传统: JDBC Template: /*JDBC Template提供统一的模板方法,在保留代码灵活性的基础上尽量减少持久化代码*/ /*jabc api*/ Statement statement=conn.createStatement(); ResultSet resu...

Rankis的博客 640

Spring JDBC Template

1.Test class : package com.bcsis.g3.test; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource;

snow365的专栏 1万+
上一篇: 深入 -- SpringMVC和Struts2 的区别
下一篇: IDEA -- IntelliJ IDEA14 创建JavaWeb工程 配置Tomcat 部署 运行
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值