这里介绍一下通过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. Android Native IPC 方案支持情况

    Binder - 不支持Native层的binder 内存共享 - 不支持 信号量(信号灯) - 不支持 消息队列 - 不支持 信号 - 支持,但是不能用sigqueue传消息,只能用来安装信号,可以 ...

  2. [Unity3D]Unity+Android交互教程——让手机&quot;动&quot;起来

    想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用.真不好使,一导入执行就报错.调好错了再执行发现点button没反应.重复试了几遍 ...

  3. 微信小程序请求wx.request数据,渲染到页面

    先说一下基本使用.官网也有. 比如说你在App.js里面有这些变量.想修改某些值. data: { main_view_bgcolor: "", border: "&qu ...

  4. verilog gtkwave

    gtkwave,开源波形显示软件 来自 bluesky1 博客.http://blog.sina.com.cn/s/blog_566ca6330100c0t3.html~type=v5_one& ...

  5. Delphi记录record中的变体

    program Day4; {$APPTYPE CONSOLE} uses SysUtils, Util in 'Util.pas'; type TPerson = packed record ID ...

  6. jQuery select添加图标

    //下拉菜单样式 /*查找全部select的下拉菜单*/ function getElemsById(cot_val){ return document.getElementById(cot_val) ...

  7. 流式布局的使用方法--Masonry

    http://www.jq22.com/demo/masonry/ 范例 css部分 body { background-color: #c7cad0; } .post_box { backgroun ...

  8. PHP的数据类型转换

    PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: •(int).(integer):转换成整形 •(float).(double).(real):转换成浮点型 •(string):转换成 ...

  9. (译).NET4.X并行任务Task需要释放吗?

    摘要:本博文解释在.NET 4.X中的Task使用完后为什么不应该调用Dispose().并且说明.NET4.5对.NET4.0的Task对象进行的部分改进:减轻Task对WaitHandle对象的依 ...

  10. hive表支持中文设置

    默认创建表时说明中带有中文字段时会显示如下乱码信息: 解决方案: 在hive的元数据库中执行以下SQL语句,然后重新创建刚才的表即可 . ) character set utf8; ) charact ...