这里介绍一下通过Spring JDBC的方式进行数据库的增删改查的操作。
在进行程序的编写之前我们需要在本地MySQL数据库中创建一张User表,如下所示:

create database user_db;
use user_db;
create table userinfo (
id int,
username varchar(30),
password varchar(30)
);

创建完这个表以后,我们需要创建一个User类与之对应:

package com.myspring.obj;

public class User {
private int id;
private String username;
private String password;
public User() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "[" + id + "," + username + "," + password + "]";
}
}

然后我们需要创建一个Dao类UseDao用于操作数据:

package com.myspring.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; import com.myspring.obj.User; public class UserDao extends JdbcDaoSupport {
class UserRowMapper implements RowMapper<User> {
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
}
}
public List<User> queryAll() {
return getJdbcTemplate().query("select * from userinfo", new UserRowMapper());
}
public List<User> queryByUsername(String username) {
return getJdbcTemplate().query("select * from userinfo where username=?",
new Object[] { username }, new UserRowMapper());
}
public void create(User user) {
getJdbcTemplate().update("insert into userinfo (id,username,password) values (?,?,?)",
new Object[] { user.getId(), user.getUsername(), user.getPassword() });
}
public void update(User user) {
getJdbcTemplate().update("update userinfo set username=?,password=? where id=?",
new Object[] { user.getUsername(), user.getPassword(), user.getId() });
}
public void delete(int id) {
getJdbcTemplate().update("delete from userinfo where id=?", new Object[] { id });
}
}

在src/main/resources/目录下创建一个spring-jdbc.xml文件用于配置数据库的相关信息,这些信息将会保存到一个dataSource Bean中,这个dataSource又作为内部的属性保存在了jdbcTemplateUserDao Bean中,这个Bean是一个UserDao对应一个UserDao类型。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/user_db" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean> <bean id="jdbcTemplateUserDao" class="com.myspring.dao.UserDao">
<property name="dataSource" ref="dataSource" />
</bean> </beans>

最后创建一个测试类SpringJdbcPractice类用于测试:

package com.myspring.study;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.myspring.dao.UserDao;
import com.myspring.obj.User; public class SpringJdbcPractice {
@SuppressWarnings("resource")
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-jdbc.xml");
UserDao userDao = (UserDao) context.getBean("jdbcTemplateUserDao");
User user = new User();
for (int i = 1; i <= 3; i ++) {
user.setId(i);
user.setUsername("user" + i);
user.setPassword("passwd" + i);
userDao.create(user);
}
System.out.println("begin to query all ...");
List<User> users = userDao.queryAll();
for (User u : users)
System.out.println(u);
System.out.println("begin to query user with name 'user2' ...");
users = userDao.queryByUsername("user2");
for (User u : users)
System.out.println(u);
System.out.println("begin to update 'user2' ...");
user.setId(2);
user.setUsername("user2");
user.setPassword("moonlit");
userDao.update(user);
System.out.println("get user2 after update ...");
users = userDao.queryByUsername("user2");
for (User u : users)
System.out.println(u);
System.out.println("delete 'user3' ...");
userDao.delete(3);
System.out.println("query all after delete ...");
users = userDao.queryAll();
for (User u : users)
System.out.println(u);
}
}

输出效果如下:

begin to query all ...
[1,user1,passwd1]
[2,user2,passwd2]
[3,user3,passwd3]
begin to query user with name 'user2' ...
[2,user2,passwd2]
begin to update 'user2' ...
get user2 after update ...
[2,user2,moonlit]
delete 'user3' ...
query all after delete ...
[1,user1,passwd1]
[2,user2,moonlit]

Spring JDBC样例的更多相关文章

  1. spring aop 样例

    基于注解的AOP 方式 1.加入jar包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver- ...

  2. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  3. Spring MVC使用样例

    Spring MVC使用样例 步骤1:添加Spring的相关依赖 1 <dependency> 2 3 <groupId>com.alibaba.external</gr ...

  4. Spring Cloud使用样例

    Spring Cloud Demo 项目地址:https://github.com/hackyoMa/spring-cloud-demo 组件 基于Spring Boot 2.0.4.Spring C ...

  5. spring事务详解(二)简单样例

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  6. 【spring教程之中的一个】创建一个最简单的spring样例

    1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ...

  7. Spring Ajax一个简单样例

    配置不说了.要在前面helloworld的样例基础上弄. 相同在hello下新建ajax.jsp <%@ page language="java" contentType=& ...

  8. spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

    maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...

  9. Spring Boot入门样例-001-Java和Maven安装配置

    Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...

随机推荐

  1. Json序列化之.NET开源类库Newtonsoft.Json

    上代码: using System; using System.Collections; using System.Collections.Generic; using System.IO; usin ...

  2. 怎样在tsung中使用动态參数(二)

    上一篇博客说过,在配置getOrderId请求时,能够用动态变量(order_id)解析和捕获服务端返回的json对象.这个变量能够作为接下来的订单确认请求(Confirm)的输入參数.看一下Conf ...

  3. Ubuntu14.04.3 64位环境下openjdk7编译

    系统环境:Ubuntu14.04.3 -amd64 in VMWare1.安装openjdk7依赖 sudo apt- sudo apt--jdk sudo apt-get install build ...

  4. sass 的使用

    普通变量 ? 1 $fontSize:12px; 默认变量 ? 1 $fontSize:12px; !default; 变量覆盖:只需要在默认变量之前重新声明下变量即可 ? 1 2 $fontSize ...

  5. Ubuntu下安装RabbbitVCS(图形化svn管理工具)- Ubuntu也有TortoiseSVN

    在Windows下用惯了TortoiseSVN这只小乌龟,到了Ubuntu下很不习惯命令行的SVN,于是经过一番寻找安装了RabbitVCS这款SVN图形化前端工具(官方网站:http://rabbi ...

  6. 《Google软件测试之道》- Google软件测试介绍

    <Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试  2 角色  3 组织结构  4 爬.走.跑  5 测试类型  相关链接 与Micro ...

  7. lucene4.7学习总结 (zhuan)

    http://blog.csdn.NET/mdcmy/article/details/38167955?utm_source=tuicool&utm_medium=referral ***** ...

  8. Python异常处理try...except...finally raise assert

    异常处理:try ...except  try代码块放置容易发生异常的语句:except代码块放置处理异常的语句try ...except...finally finally代码快是任何时候都会执行的 ...

  9. [C++]using std string;的作用是什么

    相关资料: http://bbs.csdn.net/topics/330194465 #include <string>将string库包含到当前编译单元中. using std::str ...

  10. PDF文件的加载及展示

    项目需要显示PDF文件,于是遍寻了网络,发现的方法以下几种: 1.使用UIWebView加载,没啥说的,根据文件路径,网络或者本地皆可,创建一个NSURLRequest,然后用webView加载就可以 ...