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 ...
随机推荐
- EL表达式中fn函数
JSTL 使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及 session中的数据的访问非常方便,但是我们在实际应用中经常需 ...
- Spring Cloud 模块简介
Spring Cloud Netflix对微服务的支持还有: Hystrix: 断路器和资源隔离 Feign: 声明式HTTP REST请求客户端 Ribbon: 与Eureka结合实现软负载均衡 Z ...
- Java Persistence with MyBatis 小结3
1 映射器配置文件和映射器接口 在 com.mybatis3.mappers 包中的 StudentMapper.xml 配置文件内,是如何配置 id 为”findStudentById”的 SQL ...
- c3p0数据库连接池管理
之前已经讲过dbcp可以用于数据库连接池进行管理.另一种技术c3p0也可以用于数据库连接池管理,其中Spring等框架都是基于c3p0技术进行数据库连接池管理的. 使用之前需要引入 c3p0-0.9. ...
- 页面局部加载,适合Ajax Loading场景(Demo整理)
效果图: 完整demo下载
- Atitit.故障排除系列-----apache 不能启动的排除
Atitit.故障排除系列-----apache 不能启动的排除 能直接使用cli启动httpd ,,详细打印出信息.. C:\Users\ASIMO>"C:\wamp\apach ...
- SSH 限制
SSH 限制 限制 SSH 连接 通过使用用户.组和拒绝/允许条目限制 SSH 用户连接您的主机.还可以针对各个主机使用 TCP Wrappers. 评论 David Tansley, 系统管理员, ...
- java 清除 bom
参考工具 http://akini.mbnet.fi/java/unicodereader/ Utf8BomRemover 清除bom的方法 package cn.com.do1.component ...
- Odoo ParseError:"decoder jpeg not available" while parsing....
The reason causing this problem is the plugin PIL install error to solve this problem,try this: 1. c ...
- arm + fpga 核心板