Spring JDBC样例
这里介绍一下通过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样例的更多相关文章
- spring aop 样例
基于注解的AOP 方式 1.加入jar包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver- ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- Spring MVC使用样例
Spring MVC使用样例 步骤1:添加Spring的相关依赖 1 <dependency> 2 3 <groupId>com.alibaba.external</gr ...
- Spring Cloud使用样例
Spring Cloud Demo 项目地址:https://github.com/hackyoMa/spring-cloud-demo 组件 基于Spring Boot 2.0.4.Spring C ...
- spring事务详解(二)简单样例
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
- 【spring教程之中的一个】创建一个最简单的spring样例
1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ...
- Spring Ajax一个简单样例
配置不说了.要在前面helloworld的样例基础上弄. 相同在hello下新建ajax.jsp <%@ page language="java" contentType=& ...
- spring+springmvc+hibernate架构、maven分模块开发样例小项目案例
maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...
- Spring Boot入门样例-001-Java和Maven安装配置
Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...
随机推荐
- 使用Open Live Writer写博客
1. 下载安装软件 安装包路径http://openlivewriter.org/ 2.配置 打开软件后会提示你配置博客账号地址 3.安装代码高亮插件 下载插件源代码https://pan.baidu ...
- JEECG环境搭建(Maven版本)-总结Eclipse
1.安装sql server 数据库: 解决办法: 控制面板→程序和功能→启用或关闭Windows功能 .Net Framework 3.5这一项未被完全选中(应为对勾,如果是方块也不可以) 选中该项 ...
- atitit. java跟php的比较..为什么大企业喜欢java 而不是php
atitit. java跟php的比较..为什么大企业喜欢java 而不是php 1. 主要原因::php是"低技术.低价格.低素质人员使用"的三低武器 1 2. 三低武器的特点( ...
- Git Manual / Git使用手册 / Git, GitLab, Git Bash, TortoiseGit (建议全文复制到Word文档中通过导航窗格查看)
Git使用手册 目录 1 引言 2 Git.GitLab简介 2.1 Git 2.2 GitLab 2.3 Git基本概念 3 运行环境 4 ...
- WannaCry病毒应急处置
WannaCry病毒应急处置 病毒介绍 近期勒索病毒WannaCry大面积爆发,并迅速蔓延.被感染的机器,病毒会自动加密系统中的图片.文档.音频.视频等几乎所有类型的文件,必须缴纳高额勒索金(人民 ...
- CentOS6.2下安装配置MySql
转自:Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.ecli ...
- filter从web.xml读取config的时候中文编码问题
首先,web.xml中不建议出现超出ASCII范围的字符 但是作为一点积累,简单举个例子如下,其核心代码就是new String(String.getBytes(charset_1), charset ...
- poj2559单调栈
题意:给出连续的矩形的高....求最大面积 #include<iostream> #include<stack> #include<stdio.h> using n ...
- python操作word
python教程(百度经验) Python 操作Word(Excel.PPT等通用) import win32comfrom win32com.client import Dispatch, co ...
- 微博excel数据清洗(Java版)
微博数据清洗(Java版) 原创 2013年12月10日 10:58:24 2979 大数据公益大学提供的一份数据,义务处理一下,原始数据是Excel,含有html标签,如下: 要求清洗掉html ...