学习Spring框架,使用JDBC的方式配置方式搭建一个项目,进行项目总结。


首先,采用MVC设计模式思想,搭建项目目录。

然后各个目录文件下面的相关源码附上:

controller目录:


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.jredu.jdbc.dao.AccountDao;
import com.jredu.jdbc.entity.Account;
public class AccountAction { public static void main(String[] args) { ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext-jdbc.xml");
AccountDao dao = app.getBean(AccountDao.class);
//System.out.println(dao.selectAll()); //插入
/* Account account = new Account();
account.setUname("admin2");
account.setPwd("321");
System.out.println(dao.insert(account));*/ //更新修改
/*Account account = new Account();
account.setId(3);
account.setUname("张三");
account.setPwd("abc");
System.out.println(dao.update(account));*/ //查询
//System.out.println(dao.selectAll()); //删除
//System.out.println(dao.delete(3)); //查询一条
System.out.println(dao.selectOne(2));
}
}

dao层目录的源码:

import java.util.List;

import com.jredu.jdbc.entity.Account;

public interface AccountDao {

    //查询一条
Account selectOne(int id); //查询
List<Account> selectAll(); //添加
int insert(Account account); //删除
int delete(int id); //修改更新
int update(Account account); }

dao.impl目录下的源码:

package com.jredu.jdbc.dao.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository; import com.jredu.jdbc.dao.AccountDao;
import com.jredu.jdbc.entity.Account; @Repository
public class AccountDaoImpl implements AccountDao{ //我们自己注入进来的
@Autowired
private JdbcTemplate template; @Override
public Account selectOne(int id) {
// TODO Auto-generated method stub
String sql = "select * from account where id=?";
RowMapper<Account> mapper = new BeanPropertyRowMapper<Account>(Account.class);
return template.queryForObject(sql,mapper,id);
} @Override
public List<Account> selectAll() {
// TODO Auto-generated method stub RowMapper<Account> mapper = new BeanPropertyRowMapper<Account>(Account.class);
String sql = "select * from account";
return template.query(sql,mapper);
} @Override
public int insert(Account account) {
// TODO Auto-generated method stub
String sql = "insert into account values(account_sql.nextval,?,?)";
return template.update(sql, account.getUname(),account.getPwd());
} @Override
public int delete(int id) {
// TODO Auto-generated method stub
String sql = "delete from account where id=?";
return template.update(sql,id);
} @Override
public int update(Account account) {
// TODO Auto-generated method stub
String sql = "update account set uname=?,pwd=? where id=?";
return template.update(sql,account.getUname(),account.getPwd(),account.getId());
} }

entity实体类目录源码:

package com.jredu.jdbc.entity;

public class Account {

    private int id;
private String uname;
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "Account [id=" + id + ", uname=" + uname + ", pwd=" + pwd
+ ", getId()=" + getId() + ", getUname()=" + getUname()
+ ", getPwd()=" + getPwd() + ", getClass()=" + getClass()
+ ", hashCode()=" + hashCode() + ", toString()="
+ super.toString() + "]";
} }

util目录下的源码:

package com.jredu.jdbc.util;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport; public class BaseDao extends JdbcDaoSupport{ //该方法自动被调用
@Autowired
public void setJdbcDataSource(DataSource datasource){
setDataSource(datasource);
}
//调用的是bean,自动设置 则AccountDaoImpl接口方法 不需要private JdbcTemplate template; }

然后,就要进行最重要的环节部分了,以下部分需要细致仔细的配置,否则很容易出错。

第一步,导入导入c3p0的jar包,导入jdbc驱动包。 将这两个包导入WebRoot目录下的WEB—INF目录里的lib文件夹里。

第二步,在applicationContext-jdbc.xml中导入所有需要的配置文件信息,我就不一一导入,直接上其源码。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 自动扫描 -->
<context:component-scan base-package="com.jredu.jdbc"></context:component-scan>
<!-- 配置C3P0数据源 -->
<!-- 导入资源文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean
id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:user="${jdbc.user}"
p:password="${jdbc.pwd}"
p:driverClass="${jdbc.driverClassName}"
p:jdbcUrl="${jdbc.url}"
p:initialPoolSize="${jdbc.initPoolSize}"
p:maxPoolSize="${jdbc.maxPoolSize}"
/>
<!-- 配置JDBC Template -->
<bean
id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate"
p:dataSource-ref="dataSource"
/> </beans>

第三步,配置jdbc-properties文件,由于我连接的Oracle,所以配置的是Oracle数据库。

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc\:oracle\:thin\:@localhost\:1521\:jredu
jdbc.user=OnlineTest
jdbc.pwd=Jredu12345
jdbc.initPoolSize=30
jdbc.maxPoolSize=10
jdbc.paper=A4
jdbc.box=gray

至此,项目搭建完毕,搭建完后如果需要添加其他功能,补充其他功能添加即可运行。

Spring框架——JDBC方式搭建项目的更多相关文章

  1. Spring框架第一天(搭建项目)

    Spring框架 1.简介 1.1 Spring是什么 一个开源的框架,是JavaEE开源框架 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以IoC(Inve ...

  2. 跟着刚哥学习Spring框架--JDBC(六)

    Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...

  3. Spring框架学习之--搭建spring框架

    此文介绍搭建一个最最简单的spring框架的步骤 一.创建一个maven项目 二.在pom.xml文件中添加依赖导入spring框架运行需要的相关jar包 注意:在引入jar包之后会出现org.jun ...

  4. Spring框架——JDBC与事务管理

    JDBC JDBCTemplate简介 XML配置JDBCTemplate 简化JDBC模板查询 事务管理 事务简介 Spring中的事务管理器 Spring中的事务管理器的不同实现 用事务通知声明式 ...

  5. 简单使用Spring Boot+JpaRepository+hibernate搭建项目

    sql: -- -------------------------------------------------------- -- 主机: 127.0.0.1 -- 服务器版本: 10.3.9-M ...

  6. 使用 Mybatis 框架 jdbc 方式批量写入 SQL Server,报错 com.microsoft.sqlserver.jdbc.SQLServerException 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数,最多应为2100

    这个错是sqlserver抛出来的. 进过验证,上述错误中的2100为插入的总字段数. 比如下面这种插入方式,values后面的一个括号里的字段为30个,那么后面最多只能加70条,即这种批量插入方式一 ...

  7. spring框架-jdbc

    一.实体层的不同名字    entity 实体类 :就是和数据库表一一对应的JavaBean  pojo 简单的java对象:任何应用场景的JavaBean  po 持久化对象 :就是和数据库表一一对 ...

  8. spring 框架jdbc连接数据库

    user=LF password=LF url=jdbc:oracle:thin:@localhost:1521:orcl driver=oracle.jdbc.driver.OracleDriver ...

  9. 跟着刚哥学习Spring框架--创建HelloWorld项目(一)

    1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ...

随机推荐

  1. 如何实现Application event,观察者模式

    spring 事件为bean 与 bean之间传递消息.一个bean处理完了希望其余一个接着处理.这时我们就需要其余的一个bean监听当前bean所发送的事件. spring事件使用步骤如下: 1.先 ...

  2. 分布式一致性协议 Raft

    分布式领域,CP模型下 数据一致性协议至关重要,不然两边数据不一致容易出现数据读混乱问题.像Etcd Consul  zookeeper Eureka ,Redis集群方案这些中间件 都有一致性算法来 ...

  3. java:原子类的CAS

    当一个处理器想要更新某个变量的值时,向总线发出LOCK#信号,此时其他处理器的对该变量的操作请求将被阻塞,发出锁定信号的处理器将独占共享内存,于是更新就是原子性的了. 1.compareAndSet- ...

  4. 线程安全问题synchronized锁

    1.线程安全问题的原因 因为 Java 中对静态变量的自增,自减并不是原子操作,要彻底理解,必须从字节码来进行分析 例如对于 i++ 而言(i 为静态变量),实际会产生如下的 JVM 字节码指令:  ...

  5. shell实现99乘法表

    #!/usr/bin/env sh for ((x=1;x<10;x++));do for ((y=1;x>=y;y++));do printf "${y}x${x}=$(exp ...

  6. 一文彻底理解IO多路复用

    在讲解IO多路复用之前,我们需要预习一下文件以及文件描述符. 什么是文件 程序员使用I/O最终都逃不过文件. 因为这篇同属于高性能.高并发系列,讲到高性能.高并发就离不开Linux/Unix,因此这里 ...

  7. Empire

    Empire 内网渗透神器 一 基本渗透 安装 git clone https://github.com/BC-SECURITY/Empire/ ./setup/install.sh 启动 ./emp ...

  8. Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

  9. Chrome Performance性能分析面板使用

    最近做的项目都是内嵌egret游戏,想在移动端监测下它的性能,于是就开始了对Performance的探索: 一.使用 打开控制台,一顿操作: 网络选择Fast 3G,模拟手机普通3G环境,虽然现在大家 ...

  10. ts类与修饰符

    最近在用egret做游戏,就接触到了ts,刚开始的时候觉得类挺难的,毕竟大多数的JavaScript工程师工作中不怎么需要用到这个,但是学起来就不愿意撒手了,真香! typescript其实是es6的 ...