java spring jdbc配置

2023-11-10

  整理了一下java spring框架的jdbc,首先说明一下这个jdbc是在myeclipse下配置的,适合初学者。

       第一步我们在myeclipse下建立一个web项目,然后右击 项目名称 鼠标移动到  myeclipse 下,然后再移动到右边的add spring capabilities ,如图所示:

   

     第二步,我们给项目加包spring3.0版本,并且添加四个包,把包复制到lib的目录下,否则可能提示你的项目中没有添加包,配置完之后我们就发现我们的项目多了一个

“applicationContext.xml”配置文件 和lib目录下的许多包。第二步的配置如图所示:

      

    第三步,给项目添加一个mysql的数据驱动包,不懂的同学可以私聊我。并且使用一个数据库,数据库表的信息如下

  

  1. mysql> desc user;  
  2. +-------+-------------+------+-----+---------+----------------+  
  3. | Field | Type        | Null | Key | Default | Extra          |  
  4. +-------+-------------+------+-----+---------+----------------+  
  5. | id    | int(11)     | NO   | PRI | NULL    | auto_increment |  
  6. name  | varchar(20) | NO   |     | NULL    |                |  
  7. | pwd   | varchar(20) | NO   |     | NULL    |                |  
  8. +-------+-------------+------+-----+---------+----------------+  


 

    第四步,配置applicationContext.xml文件,直接给代码

               

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  7.     <!-- 获取数据源 -->  
  8.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  9.         <!-- mysql数据库的驱动 -->  
  10.         <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
  11.         <!-- 数据库的地址-->  
  12.         <property name="url" value="jdbc:mysql://localhost:3306/test"></property>  
  13.         <!-- 数据库名 -->  
  14.         <property name="username" value="root"></property>  
  15.         <!-- 数据库密码,我的数据库没设置密码,所以为空 -->  
  16.         <property name="password" value=""></property>  
  17.     </bean>  
  18.     <!-- jdbc的模板类-->  
  19.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  20.         <!-- 给模板的变量dataSource赋值,指向第一个bean的id-->  
  21.         <property name="dataSource" ref="dataSource"></property>  
  22.     </bean>  
  23.     <!-- 我们自己定义的一个类,如果我们还没有userDAO这个类,请暂时不要下面的配置,后面写完UserDAO这个类再补上去-->  
  24.     <bean id="userdao" class="UserDAO">  
  25.         <!-- 给userdao的变量jdbcTemplate赋值-->  
  26.         <property name="jdbcTemplate" ref="jdbcTemplate"></property>  
  27.     </bean>  
  28. </beans>  

 

第五步,写一个封装类UserVO 也就是javaBean,里面的构造方法不能少,否则可能导致不能实例化或者参数多与少。废话不多说,给出具体代码:

[java]  view plain copy print ?
  1. public class UserVO {  
  2.     private int id;  
  3.     private String name;  
  4.     private String pwd;  
  5.       
  6.     public UserVO() {  
  7.         super();  
  8.     }  
  9.   
  10.     public UserVO(int id, String name, String pwd) {  
  11.         super();  
  12.         this.id = id;  
  13.         this.name = name;  
  14.         this.pwd = pwd;  
  15.     }  
  16.   
  17.     public UserVO(String name, String pwd) {  
  18.         super();  
  19.         this.name = name;  
  20.         this.pwd = pwd;  
  21.     }  
  22.     public int getId() {  
  23.         return id;  
  24.     }  
  25.     public void setId(int id) {  
  26.         this.id = id;  
  27.     }  
  28.     public String getName() {  
  29.         return name;  
  30.     }  
  31.     public void setName(String name) {  
  32.         this.name = name;  
  33.     }  
  34.     public String getPwd() {  
  35.         return pwd;  
  36.     }  
  37.     public void setPwd(String pwd) {  
  38.         this.pwd = pwd;  
  39.     }  
  40. }  


 


 


第六步,写一个dao的继承类,里面写我们增删改查的方法,主要是让其它的dao子类继承这个类的方法。很有效率的一段代码,我只写了五个,下面给出具体代码:

[java]  view plain copy print ?
  1. import java.util.List;  
  2.   
  3.   
  4. public interface UserDAOInterface {  
  5.         public void insert(UserVO uservo);  
  6.         public void delete(int id);  
  7.         public void update(UserVO uservo);  
  8.         public UserVO select(int id);  
  9.         public List find();  
  10. }  

 

 

第七步,我们可以写我们的dao子类了,只要继承我们第六步的接口类即可继承5个方法:代码如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. import java.sql.ResultSet;  
  2. import java.sql.SQLException;  
  3. import java.util.List;  
  4. import org.springframework.jdbc.core.JdbcTemplate;  
  5. import org.springframework.jdbc.core.RowMapper;  
  6. import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;  
  7.   
  8.   
  9. public class UserDAO implements UserDAOInterface {  
  10.     private JdbcTemplate jdbcTemplate;  
  11.       
  12.     /* 
  13.      * 查询所有的数据信息 
  14.      * (non-Javadoc) 
  15.      * @see UserDAOInterface#find() 
  16.      */  
  17.     public List find(){  
  18.         String sql="select * from user";  
  19.         return jdbcTemplate.query(sql, new UserMapper());  
  20.     }  
  21.     /* 
  22.      *  
  23.      * 使用rowMapper 19行用到, 因为query方法不能直接放回一个数组,所以我们只能通过rowMapper赋值给uservo; 
  24.      *  
  25.      * RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装 
  26.      */  
  27.     private static final class UserMapper implements RowMapper{  
  28.           
  29.   
  30.         public Object mapRow(ResultSet rs, int rowNum) throws SQLException {  
  31.             // TODO Auto-generated method stub  
  32.             UserVO uservo=new UserVO();  
  33.             uservo.setId(rs.getInt("id"));  
  34.             uservo.setName(rs.getString("name"));  
  35.             uservo.setPwd(rs.getString("pwd"));  
  36.             return uservo;  
  37.         }  
  38.           
  39.       
  40.     }  
  41.     /* 
  42.      * 删除信息 
  43.      * (non-Javadoc) 
  44.      * @see UserDAOInterface#delete(int) 
  45.      */  
  46.     public void delete(int id) {  
  47.         // TODO Auto-generated method stub  
  48.         String sql="delete from user where id=?";  
  49.         jdbcTemplate.update(sql,id);  
  50.     }  
  51.     /* 
  52.      * 增加信息 
  53.      * (non-Javadoc) 
  54.      * @see UserDAOInterface#insert(UserVO) 
  55.      */  
  56.     public void insert(UserVO uservo) {  
  57.         // TODO Auto-generated method stub  
  58.         String sql=" insert into user (name,pwd) values(?,?)";  
  59.         jdbcTemplate.update(sql,new Object[]{  
  60.                 uservo.getName(),uservo.getPwd()  
  61.         });  
  62.     }  
  63.     /* 
  64.      * 查询信息 
  65.      * (non-Javadoc) 
  66.      * @see UserDAOInterface#select(int) 
  67.      */  
  68.     public UserVO select(int id) {  
  69.         // TODO Auto-generated method stub  
  70.         String sql="select * from user where id=?";  
  71.         return jdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(UserVO.class),id);  
  72.   
  73.     }  
  74.     /* 
  75.      * 更新信息 
  76.      * (non-Javadoc) 
  77.      * @see UserDAOInterface#update(UserVO) 
  78.      */  
  79.     public void update(UserVO uservo) {  
  80.         // TODO Auto-generated method stub  
  81.         String sql="update user set name=?,pwd=? where id=?";  
  82.         jdbcTemplate.update(sql,uservo.getName(),uservo.getPwd(),uservo.getId());  
  83.     }  
  84.     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  
  85.         this.jdbcTemplate = jdbcTemplate;  
  86.     }  
  87.     public JdbcTemplate getJdbcTemplate() {  
  88.         return jdbcTemplate;  
  89.     }  
  90.   
  91. }  


 

第八步就是给出我的测试代码:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. import javax.sql.DataSource;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6.   
  7. public class Test {  
  8.     public static void main(String[] args){  
  9.         ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");  
  10.         /*DataSource dataSource=(DataSource) ac.getBean("dataSource"); 
  11.         System.out.println("dataSource--------"+dataSource);*/  
  12.         UserDAO userdao=(UserDAO) ac.getBean("userdao");  
  13.           
  14.           
  15.         //增加信息  
  16.         //UserVO uservo=new UserVO("123","123");  
  17.         //userdao.insert(uservo);  
  18.           
  19.         //删除信息  
  20.         //userdao.delete(22);  
  21.           
  22.         //修改信息  
  23.         //UserVO uservo=new UserVO(23,"lisi","123456");  
  24.         //userdao.update(uservo);  
  25.           
  26.         //按id查询信息  
  27.         //UserVO uservo=userdao.select(23);  
  28.         //System.out.println("userName---"+uservo.getName());  
  29.           
  30.         //查询所有信息  
  31.     /*  for(Object o:userdao.find()){ 
  32.             UserVO uservo=(UserVO) o; 
  33.             System.out.println("id----"+uservo.getId()+"---name----"+uservo.getName()+"------------pwd------"+uservo.getPwd()); 
  34.         }*/  
  35.     }  
  36. }  


最后我要说的是,这个jdbc是短时间整理出来的,可能存在不足的地方,望指出。spring 的mvc我也会抽空学习发表到博客上来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java spring jdbc配置 的相关文章

  • elementUI图片遍历循环+预览【el-image查看大图+预览】

    我这边接受的数据结构 code 200 msg 图片列表 object id 1 partsName picturesName a jpg picturesUrl http 192 168 3 65 8111 image a jpg typ
  • POI向Excel中插入图片

    package com xiangyu bigdata xycom execl import java awt image BufferedImage import java io ByteArrayOutputStream import
  • flask-sqlalchemy 解决 with_for_update() 行锁不生效、数据滞后问题

    解决方案 我先把解决方案放在前面 后面慢慢阐明拖了我三天的研究过程和原因 若出现带锁的查询修改前 先行commit一次 model db session commit 先行commit一次 user models User query wi
  • Python-字符串str和json格式的转换

    我是精神抖擞王大鹏 不卑不亢 和蔼可亲 计算机硕士 目前小米大数据开发 日常会分享总结一些自己面试实际问题的回答 欢迎一起讨论 公众号 diting dapeng str转json str转换为json格式 前提一定需要保证这个str的格式
  • Building the kernel with clang

    https lwn net Articles 734071 https oschina net news 89194 linux build kernel with clang Building the kernel with clang
  • neo4j语法-where

    where语句无法单独使用 而是和match optional match start with一起使用 或者做为with和start的结果过滤器 基础使用 操作符 MATCH n WHERE n name Peter XOR n age
  • Matlab绘图案例,MATLAB画图大法,附详细代码

    目录 1 使用subplot创建多个子图 2 绘制误差棒图 3 绘制条形堆积图 4 绘制堆积面积图 5 绘制直方图并拟合曲线 6 绘制等高线图 7 绘制光滑的曲线 8 绘制彩虹图 9 绘制带有错误标记的散点图 10 绘制水平堆积条形 11
  • Syncthing 1.1.1 发布,文件持续同步应用

    百度智能云 云生态狂欢季 热门云产品1折起 gt gt gt Syncthing 1 1 1 发布了 Syncthing 是一款持续文件同步应用 可同步多台计算机之间的文件 此版本更新内容包括 5531 根据大小而不是条目刷新数据库 557
  • 莫烦---Tensorflow学习

    加粗样式边学边记录 感谢莫烦大神的教学视频 获益良多 之前已经看完了吴恩达Andrew Ng的视频 但对Tensorflow的使用还是有很多不懂的地方 还是要花些时间好好学学tensorflow和keras 莫烦大神的视频学习地址 Tens
  • css 动态生成动画代码在线工具,非常好用!推荐

    网址 Animista CSS Animations on Demand 这个网站提供了大量的css动画效果 用户可以自定义动画 在线生成动画代码
  • ChatGPT的代码生成是怎么做的?「基于深度学习的代码生成方法」最新研究进展...

    机器学习研究组 代码生成 Code Generation 是指根据自然语言描述生成相关代码片段的任务 在软件开发过程中 常 常会面临大量重复且技术含量较低的代码编写任务 代码生成作为最直接辅助开发人员完成编码的工作受到学术 界和工业界的广泛
  • mybatis框架学习(完整)

    目录 总结jdbc出现的问题 mybatis介绍 mybatis入门程序 占位符 与字符串拼接符 区别 mybatis框架的原理 别名配置与映射文件加载方式 mybatis与hibernate的比较 一 总结jdbc出现的问题 1 准备数据
  • 本机与服务器传输数据

    1 Xftp xftp传输的速度在500kb左右 对于上GB的数据集传输时显得太慢 技巧 可以先本地压缩后再上传 上传后在服务器端用unzip命令解压即可 警告 在使用Xftp传输文件时若与服务器不甚断连 当再次重连后一定要记得整个文件重新
  • 非阻塞的connect使用方式

    connect 函数的调用涉及到3次握手 默认connect函数为阻塞连接状态 通常connect 会阻塞到三次握手的完成和失败 而这个connect阻塞超时时间会依赖于系统 一般为75s到几分钟时间 一种方式可以通过该系统配置 proc
  • 教你如何清理 Docker 存储驱动的磁盘占用空间

    Author rab 有时候你会发现 你的 Docker 业务容器虽然做了数据持久化 且数据持久化的磁盘空间占用并不大 但是 Docker 的 Overlay2 目录占用却很大 我们知道 Overlay2 是 Docker 的存储驱动 也是
  • java 读取文件 和 执行SQL脚本 (支持中文)

    读文件操作应用 执行SQL脚本文件 执行SQL脚本文件 param path throws SQLException throws ClassNotFoundException public void exeSQLScript String
  • 操作系统原理——绪论:操作系统的概念、发展、类型、基本特征、功能、运行环境和内核结构

    目录 一 操作系统的概念 1 计算机系统的概念 2 操作系统的概念 3 为什么计算机系统需要操作系统 二 操作系统的形成与发展 三 操作系统的类型 1 批处理操作系统 Batch OS 2 分时操作系统 3 实时系统 4 嵌入式操作系统 5
  • 一些关于javascript、jQuery使用时的建议

    最新地址请访问 http leeyee github io blog 2011 04 09 javascript jquery user suggests 1 在遍历数组时缓存长度 在遍历数组时应将数组的长度保存在一个变量中 不要在循环中每
  • 熊哥帮忙

    原来那个找不到文件的问题 今天咨询了熊哥 SQL gt oradebug setospid 578038 Oracle pid 3 Unix process pid 578038 image oracle orasrva DIAG SQL

随机推荐

  • 刷脸支付是商业社会在时间效率数据价值的挖掘

    刷脸支付这项网付方式随着时代发展人工智能技术的不断进步代替传统聚合支付方式 开始了最早的商业应用了 而在5G迅速发展的现在刷脸支付也被广泛的运用在生活中 而刷脸支付也将会推动市场发展创造全新的快捷支付 为用户提供便捷 当你线下付款时常会遇到
  • requirements.txt 的格式

    如下文 requirements txt BeautifulSoup 3 2 1 Django 1 7 Glances 2 6 2 GnuPGInterface 0 3 2 LinkChecker 9 3 Markdown 2 6 1 My
  • 新印的钞票如何流入市场?

    原文地址 http zhidao baidu com question 136634468 html 印钞厂一直在印钞票 那市场上的钞票总量一直会增加 这些新印的钞票是怎么流入市场的呢 我看到另一个和我这个相似的问题的回答是 国家通过给公务
  • kali 重置root密码

    kali版本 kali linux 2021 2 但是其他版本也都一样的操作 方法 步骤 第一步 点击开启此虚拟机 打开安装好的kali虚拟机 第二步 进入开机启动页面 按键盘e键进入Kali GNU GRUB页面 进入GNU GRUB页面
  • QTcpSocket::connectToHost内存泄漏的问题

    使用QTcpSocket上网看博客时 发现有篇抄来抄去的博客提到QTcpSocket类的方法connectToHost会泄露内存 即使把调用这个方法的QTcpSocket实例delete掉 内存也不会释放 反复connectToHost会导
  • 树莓派开启 wifi 热点

    树莓派小巧的体型当然不是为了固定放在桌子上 更是为了做成可移动的智能设备 例如智能小车 当树莓派不在室内的 wifi 下时 怎样方便地连接上它呢 于是想要把树莓派变成 wifi 热点 就能用我们的手机或者笔记本连接它了 一 修改 etc n
  • 蓝牙Mesh中的Heartbeat和Heartbeat Publication

    Heartbeat 在蓝牙Mesh网络中 Heartbeat 心跳 是一种用于监测设备在线状态和网络连通性的机制 它是由每个设备定期发送的小型消息组成 用于指示设备的存在和活动状态 Heartbeat的主要目的是确保网络中的设备处于活动状态
  • js实现---加油站问题(贪心算法)

    加油站问题 贪心算法 基本要素 贪心选择 在对问题求解时 总是做出在当前看来是最好的选择 也就是说 不从整体最优上加以考虑 他所做出的是在某种意义上的局部最优解 最优子结构 当一个问题的最优解包含其子问题的最优解时 称此问题具有最优子结构性
  • 树形结构互转

    树形结构互转 1 线性转树形 lineToTree list const list list map e gt id e id pid e parentId label e name raw e const addChild arr obj
  • TPE原理总结

    hyperopt TPE 在hyperopt tpe py 935 处打一断点 5 超参的取值 3 loss的取值 GMM1 GMM1 lpdf len dict literal broadcast best getitem sub arr
  • 三星s9系统更新无法连接服务器,三星 S9/S9+ 手机开始推送 One UI 2.1 系统固件更新...

    IT之家6月15日消息 外媒SamMobile报道 三星Galaxy S9和Galaxy S9 现在正在获取其最新的重大更新OneUI 2 1 今天开始在韩国和德国版三星S9 S9 中推送 上一周 德国版Galaxy Note9手机开始推送
  • Linux拷贝U盘文件(命令行)

    Linux系统有的有界面 有的没有只要命令窗口 因此导入外部文件就变得困难 没有可视化的方便 这里通过挂载u盘进行文件拷贝 首先挂载u盘 这里以centos为例 1 进入命令行模式下 输入命令 sudo i 获取root权限 2 mkdir
  • sqli-labs-master第13、14关。

    前言 输入内容被放到双引号中 报错型注入 注释符不可用 第十三关 http 192 168 89 134 sqli labs master Less 13 先输入 admin 我们还是分析一下 我们接着用and来测试 admin and 1
  • windows下tensorflow CUDA_ERROR_ILLEGAL_ADDRESS解决办法

    最近在使用tensorflow的时候出现了以下所示的bug 2017 11 08 12 24 52 838039 E tensorflow stream executor cuda cuda driver cc 1080 failed to
  • Spring事务回滚报错:org.springframework.transaction.UnexpectedRollbackException

    具体异常信息 Transaction rolled back because it has been marked as rollback only 出现了不可预知的回滚异常 因为事务已经被标志位只能回滚 所以事务回滚了 java lang
  • 视图的优点与缺点

    视图的优点 一 视图着重于特定数据 视图可以让用户或者程序开发人员只看到他们所需要的数据 而不需要把表中的所有信息与字段暴露出来 这样增强了数据的安全性 二 简化数据的操作 易维护 我们可以将经常用到的多表联合查询出来的数据 或特定的结果集
  • python django 环境搭建

    一 版本选择 Django 1 5 x 支持 Python 2 6 5 Python 2 7 Python 3 2 和 3 3 Django 1 6 x 支持 Python 2 6 X 2 7 X 3 2 X 和 3 3 X Django
  • 学习了解jboss7

    1 什么是J2EE J2EE是Java 2enterprise edition 是Java的一种企业版 用于企业级的应用服务开发 J2SE是Java 2standard edition 是Java的标准版 用于标准的应用开发 J2ME是Ja
  • mysql-8.0.32 数据库的安装 (Linux)

    Linux 中 mysql 8 0 32 数据库的安装 缘 步骤 常见问题解决方案 问题一 mysql error while loading shared libraries libtinfo so 5 cannot open share
  • java spring jdbc配置

    整理了一下java spring框架的jdbc 首先说明一下这个jdbc是在myeclipse下配置的 适合初学者 第一步我们在myeclipse下建立一个web项目 然后右击 项目名称 鼠标移动到 myeclipse 下 然后再移动到右边