一、用Spring中的JdbcTemplate操作数据库

  在MySQL中准备一个user表,表中增加一条假数据

  

  用Spring中的JdbcTemplate操作数据库,在JdbcTemplate中实现增删改查操作

    //增
void saveUser(User u); //删
void deleteUserById(Integer id); //改
void updateUser(User u); //查
//根据id查找用户
User selectUserById(Integer id); //查找全部用户List
List<User> selectAllUser(); //查找用户数量
Integer selectUserCount();

package com.Gary.bean;

public class User {

    private Integer u_id;
private String u_username;
private String u_password; public Integer getU_id() {
return u_id;
}
public void setU_id(Integer u_id) {
this.u_id = u_id;
}
public String getU_username() {
return u_username;
}
public void setU_username(String u_username) {
this.u_username = u_username;
}
public String getU_password() {
return u_password;
}
public void setU_password(String u_password) {
this.u_password = u_password;
}
@Override
public String toString() {
return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + "]";
} }

User.java

package com.Gary.dao;

import java.util.List;

import com.Gary.bean.User;

public interface UserDao {

    //增
void saveUser(User u); //删
void deleteUserById(Integer id); //改
void updateUser(User u); //查
//根据id查找用户
User selectUserById(Integer id); //查找全部用户List
List<User> selectAllUser(); //查找用户数量
Integer selectUserCount(); }

UserDao.java

package com.Gary.dao;

import java.beans.PropertyVetoException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import com.Gary.bean.User;
import com.mchange.v2.c3p0.ComboPooledDataSource; public class UserDaoImpl implements UserDao { JdbcTemplate jt = new JdbcTemplate(dataSource); private static ComboPooledDataSource dataSource; static {
//配置c3p0
try {
//使用c3p0链接数据库
dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
dataSource.setUser("root");
dataSource.setPassword("123456");
} catch (PropertyVetoException e) { e.printStackTrace();
}
} //保存用户
@Override
public void saveUser(User u) {
String sql = "insert into user values(null,?,?)";
jt.update(sql,u.getU_username(),u.getU_password()); } //根据id删除用户
@Override
public void deleteUserById(Integer id) {
String sql = "delete from user where u_id = ?";
jt.update(sql,id);
} //更新用户
@Override
public void updateUser(User u) {
String sql= "update user set u_username =? , u_password = ?where u_id =?";
jt.update(sql,u.getU_username(),u.getU_password(),u.getU_id());
} //根据id查询一个用户
@Override
public User selectUserById(Integer id) {
String sql = "select * from user where u_id = ?";
User user = jt.queryForObject(sql, new RowMapper<User>() { @Override
public User mapRow(ResultSet rs, int index) throws SQLException {
User u = new User();
u.setU_id(rs.getInt("u_id"));
u.setU_username(rs.getString("u_username"));
u.setU_password(rs.getString("u_password")); return u;
} },id); return user;
} //查询用户列表
@Override
public List<User> selectAllUser() {
String sql= "select * from user";
List<User> list = jt.query(sql, new RowMapper<User>() { @Override
public User mapRow(ResultSet rs, int index) throws SQLException {
User u = new User();
u.setU_id(rs.getInt("u_id"));
u.setU_username(rs.getString("u_username"));
u.setU_password(rs.getString("u_password")); return u;
} }); return list;
} @Override
public Integer selectUserCount() {
String sql = "select count(*) from user";
return jt.queryForObject(sql, Integer.class); } }

UserDaoImpl.java

  根据id查找用户

package com.Gary.test;

import org.junit.Test;

import com.Gary.bean.User;
import com.Gary.dao.UserDao;
import com.Gary.dao.UserDaoImpl; public class JdbcTest { @Test
public void Test1() {
UserDao dao = new UserDaoImpl();
//根据id查询用户
User u = dao.selectUserById(1);
System.out.println(u); } }

JdbcTest.java

  保存用户

package com.Gary.test;

import org.junit.Test;

import com.Gary.bean.User;
import com.Gary.dao.UserDao;
import com.Gary.dao.UserDaoImpl; public class JdbcTest2 { @Test
public void Test2() {
UserDao dao = new UserDaoImpl();
//添加一个新的数据
User u = new User();
u.setU_username("newGary");
u.setU_password("123123");
dao.saveUser(u); } }

JdbcTest2.java

二、使用Spring容器来管理JdbcTemplate

package com.Gary.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.Gary.bean.User;
import com.Gary.dao.UserDao; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTest3 { @Resource(name = "userDao")
private UserDao ud; @Test
public void Test3() {
//添加一个新的数据
User u = new User();
u.setU_username("666sGary");
u.setU_password("666");
ud.saveUser(u); } }

JdbcTest3.java

<?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-4.3.xsd"> <!-- 依赖关系 dao -> jdbcTemplate -> dataSource --> <!-- 配置 dataSource -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm_spring"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean> <!-- jdbcTemplate -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean> <!-- dao -->
<bean name="userDao" class="com.Gary.dao.UserDaoImpl">
<property name="jt" ref="jdbcTemplate"/>
</bean> </beans>

applicationContext.xml

JavaWeb_(Spring框架)Spring与JDBC的更多相关文章

  1. 跟着刚哥学习Spring框架--Spring容器(二)

    Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用.  Bean是S ...

  2. Spring框架 - Spring和Spring框架组成

    Spring框架 - Spring和Spring框架组成 Spring是什么?它是怎么诞生的?有哪些主要的组件和核心功能呢? 本文通过这几个问题帮助你构筑Spring和Spring Framework ...

  3. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  4. JavaWeb_(Spring框架)Spring整合Hibernate

    Dao层类要继承HibernateDaoSupport.java父类 原先使用Hibernate框架hibernate.cfg.xml配置数据库 <hibernate-configuration ...

  5. Spring 框架系列之 JDBC 整合实例

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring框架整合 DAO 模板 JDBC:org.springframework.jdb ...

  6. Spring框架之演示JDBC的模板类

    1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...

  7. JavaWeb_(Spring框架)Spring中IoC与DI概念入门

    Spring是于2003 年兴起的一个轻量级的Java 开源框架,它由Rod Johnson创建.传统J2EE应用的开发效率低,Spring作为开源的中间件,提供J2EE应用的各层的解决方案,Spri ...

  8. [Spring框架]Spring开发实例: XML+注解.

    前言: 本文为自己学习Spring记录所用, 文章内容包括Spring的概述已经简单开发, 主要涉及IOC相关知识, 希望能够对新入门Spring的同学有帮助, 也希望大家一起讨论相关的知识. 一. ...

  9. Spring框架---Spring入门

    Spring入门 为了能更好的理解先讲一些有的没的的东西: 什么是Spring Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架 分层 SUN提供的EE的三层结构 ...

  10. [Spring框架]Spring AOP基础入门总结一.

    前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...

随机推荐

  1. php 环境搭建问题

    项目过程中需要用到 PHP环境 https://www.cnblogs.com/cyrfr/p/6483529.html APACHE无法启动:THE REQUEST OPERATION HAS FA ...

  2. rabbitMQ 安装,基于Windows环境

    参考文章:https://www.cnblogs.com/ericli-ericli/p/5902270.htmlRabbit MQ 是建立在Erlang OTP平台上,安装前需先安装Erlang.h ...

  3. 分享一张理解数据库inner join,left join,right join,full join的图

  4. React实现顶部固定滑动式导航栏(导航条下拉一定像素时显示原导航栏样式)

    摘要 基于react的框架开发一个顶部固定滑动式的酷炫导航栏,当导航栏置顶时,导航栏沉浸在背景图片里:当鼠标滑动滚轮时,导航栏固定滑动并展示下拉样式. JS部分 相关技术栈:react.antd.re ...

  5. vs Code编辑器智能提示功能

    一.Node.Js的Typings工具可以用于Visual Studio Code的代码补全 1.vscode 的默认只有es原声api带有自动补全的功能,现在V1.9的版本默认已经支持NodeJS的 ...

  6. 使用url_for()时,会自动调用转换器的to_url()方法

    视图反推url,在动态url(转换器)反推中的应用 # -*- coding: utf-8 -*- from flask import Flask, url_for, redirect from we ...

  7. 【转】Linux编译链接问题----静态库和动态库

    Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中. a) 优点: 编译后,可执行文件不 ...

  8. 用js刷剑指offer(从尾到头打印链表)

    题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 牛客网链接 js代码 /*function ListNode(x){ this.val = x; this.next = nu ...

  9. 通用分页model封装pageList

    package selfimpr.page; import java.util.List; /** * 分页模型 * @param <T> 数据泛型 * @author selfimpr ...

  10. cas的客户端配置

    知识点:cas的客户端配置 一:cas客户端配置 二:cas认证流程原理(图) 参考:https://www.cnblogs.com/suiyueqiannian/p/9359597.html 源码: ...