【spring】spring JDBC开发 、 将创建表生成sql语句的方法
将navicate中已存在表的创建转化成sql语句的方法
1、右击表,选择对象信息
2、点击DDL
jar包引入
1、spring-starter-jdbc
代码实现:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2、驱动
代码实现:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
3、连接池
代码实现:
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version>
</dependency>
properties文件配置
代码实现:
mysql_driver=com.mysql.cj.jdbc.Driver
mysql_url=jdbc:mysql://localhost:3306/final_hotel_system?serverTimezone=UTC
mysql_username=root
mysql_passwd=root
注:
(1)连接池、数据库连接信息是专项配置信息
(2)使用新版的jdbc驱动(cj.jdbc)必须添加时间戳(?serverTimezone=UTC)
否则报错:
The server time zone value '�й���ʱ��' is unrecogni
xml文件配置
1、引入专项配置文件
代码实现:
<context:property-placeholder location="DB.properties"></context:property-placeholder>
2、创建dataSource的bean
代码实现:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${mysql_driver}"></property><property name="url" value="${mysql_url}"></property><property name="userName" value="${mysql_username}"></property><property name="password" value="${mysql_passwd}"></property></bean>
注:
该引用方式使用的是类似于el表达式的方法(不是el表达式也不是spel表达式)
3、创建jdbcTemplate 的bean
代码实现:
<bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" value="#{dataSource}"></property>
</bean>
注:
(1)查找类的快捷方法:ctrl + shift + t(在包中) ctrl + shift + r(在src里面的)
4、添加自动扫描
<context:component-scan base-package="com.zzxtit.aop.jdbc"></context:component-scan>
包内文件配置
1、创建接口
代码实现:
package com.zzxtit.aop.jdbc;public interface UserDao {public void insertUserInfor(UserInfor us);public UserInfor getUserInforById(int userId);public void deleteUserInforById(int i);public void updatePasswordById(int userId, String newPassword);
}
2、在包内添加信息类
代码实现:
package com.zzxtit.aop.jdbc;public class UserInfor {private int userId;private String password;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "UserInfor [userId=" + userId + ", password=" + password + "]";}public UserInfor() {super();}public UserInfor(int userId, String password) {super();this.userId = userId;this.password = password;}
}
3、添加实现类:
代码实现:
package com.zzxtit.aop.jdbc;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.stereotype.Repository;@Repository
public class UserDaoImol implements UserDao{@Autowiredprivate JdbcTemplate jdbcTemplate;public void insertUserInfor(UserInfor us) {String sql="insert into user_infor(user_id,password) "+ "values(?,?)"; jdbcTemplate.update(sql, us.getUserId(), us.getPassword());}public UserInfor getUserInforById(int userId) {String sql = "select * from user_infor where user_id = ?";List<UserInfor> ui = jdbcTemplate.query(sql, new BeanPropertyRowMapper<UserInfor>(UserInfor.class), userId);if(ui != null && ui.size() > 0) {return ui.get(0);}else {return null;}}public void deleteUserInforById(int userId) {String sql = "delete from user_infor where user_id = ?";jdbcTemplate.update(sql,userId);}public void updatePasswordById(int userId, String newPassword) {String sql = "update user_infor set password = ? where user_id = ?";jdbcTemplate.update(sql, newPassword,userId );}}
注:
(1)自动扫描时应将dao层注释为repository(持久层)
(2)创建bean时默认使用无参的构造方法,如果写了有参的构造方法需要手动添加一个无参的构造方法
否则报错
Failed to instantiate [ClassName]: No default constructor found;
(3)getUserInforById中使用的query方法返回的是一个list
(4)添加一个新的方法时不仅要在实现类添加而且要在接口添加,在main中无法使用(spring面向接口)
(5)使用jdbcTemplate删除数据时使用的也是update方法
运行:
代码实现:
package com.zzxtit.aop.jdbc;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/** 需要记录的操作* 1、navicate 将操作转化为sql语句的方法[GIT]* 2、报错记录 (1)使用cj.jdbc必须添加 时间戳 [git](2) 创建bean时默认使用无参构造方法[git]* 3、添加数据类型的bean还是需要使用new的方法创建的* 4、添加新方法时需要在接口添加以及实现类添加* 5、使用jdbctemplate删除数据*/
public class Main {public static void main(String[] args) {ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContest-jdbc.xml");UserDao ud = ioc.getBean(UserDao.class);UserInfor ui = ud.getUserInforById(123);System.out.println(ui);UserInfor ui1 = new UserInfor(1234,"1234");ud.insertUserInfor(ui1);ud.deleteUserInforById(1234);ud.updatePasswordById(123, "321");} }
注:
(1)像UserInfor这种用来添加数据的类是不用spring代理的,直接使用new创建
相关文章:

PL/SQL ——分页编程
通过PL/SQL编程,编写分页存储过程。代码如下所示: 1 --PL/SQL开发编写分页代码 2 --创建包 3 create or replace package Page as 4 type test_cursor is ref cursor 5 end Page; 6 --创建存储过程 7 create or replace procedure Page( 8 (tablenam…

My view towards Machine Learning
Introduction:[to be continued]转载于:https://www.cnblogs.com/JVKing/articles/2290780.html

两个表的更新、表的复制
update 表1 set from 表1,表2 where 条件 表的复制数据 1.select * into newtable from table 2.insert into table select table2 select identity(int,1,1),* into newtable from .. 这条语句有时挺管用的转载于:https://www.cnblogs.com/leshang/archive/2…

Java数据结构简述
1、数组 概念:一个存储元素的线性集合。 数组声明和创建: dataType[] arrayRefVar new dataType[arraySize]; 二维数组(多维数组)声明和创建: dataType[][] arrayName new dataType[arraylenght1][arraylenght2]; PS…

CORS漏洞利用检测和利用方式
CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,不同于古老的jsonp只能get请求。 检测方式: 1.curl访问网站 curl https://www.huasec.com -H "Origin: https://test.com…

【spring】具名参数
具名参数 配置xml文件 1、配置dataSource(数据源) 代码实现: <context:property-placeholderlocation"DB.properties"></context:property-placeholder><bean id"dataSource"class"com.alibaba.d…

利用委托和泛型实现树的常用操作
在日常开发中,经常遇到对树的操作,我们可以利用泛型和委托对这些树进行操作,这样就不需要每有一个树就要实现相应的功能了。 源码在http://files.cnblogs.com/haiconc/LangTest.zip 首先,使用类泛型声明: public class…

Scott的ASP.net MVC框架系列文章之四:处理表单数据(2)
前几周我发表了一系列文章介绍我们正在研究的ASP.NET MVC框架。ASP.NET MVC框架为你提供了一种新的开发Web应用程序的途径,这种途径可以让应用程序变得更加层次清晰,而且更加有利于对代码进行单元测试和支持TDD(测试驱动开发)开发…

eclipse工作空间配置导出
由于工作与学习的需求,需要使用不同的工作空间。而eclipse的新建工作空间其他以前的配置都没有继承过来,那么就得重新配置一遍。 经过学习其他前辈们的经验与自己的摸索总结一下3种方法: 方法一:使用eclipse的导出功能。 工作目录…

探讨UnsupportedOperationException的原因及解决方案
[原文链接]{https://blog.csdn.net/liu_005/article/details/74091805} 转载于:https://www.cnblogs.com/Wbin01/p/11222483.html

成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...
一次ac的就不说啥了。。 2799:浮点数格式 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <ctype.h> 4 #include <cmath> 5 6 char flo[10050][55]; 7 int poi[10050]; 8 9 int main()10 {11 int num;12 scanf("%d…

【转载】xmind的使用安装方法
原文链接:https://blog.csdn.net/qq_16093323/article/details/80967867

BCB Access violateion at Address 0000 0003. Read of address 0000 0003
来自网页:(我的电脑做不到) 运行一个程序,莫名出现一个对话框:access violation at address 0000.. read of address000试了几次问题依旧,网上搜了下解决办法:原文:baidu+google&…

与 Scott Guthrie 一道感受技术激情 1月13日于北京
可能很多朋友已经知道了这个消息,我觉得还是写一下,别让这个机会白白溜走。Scott Guthrie是谁,我就不介绍了,简单说:ASP.NET之父,Silverlight 的主要创始人,还管着太多微软的开发技术和工具&…

【web】将一个jar包更改成war包
可以看到,向tomcat中发布工程刚创建的工程不在可添加的范围内,所以可以看出该工程是一个jar包 1、在pom文件中添加一行代码 代码实现: <artifactId>jar.to.war</artifactId> 2、更新maven工程 此时发现main文件夹下出现了一个w…

牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...
在我们后台登陆的时候,有 用户名,密码和验证码3个必选项,所以我们托3个验证控件过来 例如这里,如果没有填写用户名,当点提交的时候,显示 红色的 * 号,并且弹出一个 alert 效果如下 这个是怎么做到的呢? 用户名后面的 * 号和弹出的 alert 分别用到 RequiredFieldValida…

HDU-1268 找新朋友 (素数筛选)
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2518 Accepted Submission(s): 1183Problem Description新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人&#x…

硬盘无法访问文件系统损坏,里面的资料怎样恢复
文件系统损坏说明这个盘的文件系统结构损坏了。在平时如果数据不重要,那么可以直接格式化就能用了。但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化。具体恢复方法可以看正文了解(不格式化的恢复方法) 工具/软件&a…

【spring】第二个springmvc helloworld 以及 spring模糊路径
第二个helloword 配置文件: 1、添加pom文件 (1)配置parent 代码实现: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version…

jquery倒计时插件可自定义多个倒计时间
jquery倒计时插件设置多个自定义倒计时时间,任意设置天、小时、分钟、秒倒计时间功能。 查看演示>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

怎样用cocos2d-x做一个基于地图块的游戏(Part One)
怎样用cocos2d-X做一个基于地图块的游戏 (Part One) 在这个分为上下两部分的教程中,我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏。在这个简单的地图块游戏里,一个精灵将在沙漠里搜寻它可口的西瓜!…

【Code Complete】《Code Complete 》
良好编程实践的百科全书,完善编码聚焦于个人技能——所有的内容都来说明我们称之为“编写巧妙的代码”(write clean code,clean可以翻译多种意思,只能意会了,有些英语翻译成汉语会很痛苦的)。这本书就是那种…

redux示例
? 献上大概只有自己看得懂的学习笔记 结合使用实例理解更容易哦~import React from react; import ReactDom from react-dom; import {createStore} from redux; //解构一个createStore 创建状态对象//默认状态 state const defaultState{arr:[qq,bmw7], };//创建r…

18常用web开发 浮动层、提示层代码下载
1、jQuery顶部固定层页面滚动淡出淡进菜单显示 查看演示>> 2、jQuery鼠标滚动条到页面底部浮动层滑动弹出信息 查看演示>> 3、网页向导Jquery插件wlGuide功能操作步骤引导 查看演示>> 4、jQuery文字段落鼠标悬停图片突出显示和预览 查看演示>> 5、jque…

Android Handler的使用(二)
Handler的使用(二) 一、 Handler与线程的关系 Handler在默认情况下,实际上它和调用它的Activity是处于同一个线程的。 例如在Handler的使用(一)的示例1中,虽然声明了线程对象,但是在实际调用当中它并没有调用线…

【windows】cmd中的help无法使用的解决方法
今天使用黑框时遇到了一个问题,我在检查tomcat端口是否被占用时发现 黑框中竟然无法识别 netstat,随后试了一下help也无法识别。查了论坛后大名大佬给出的解决方案。 一、首先确定C:\WINDOWS\system32目录下有help.exe这个文件。 二、依次打开右键单击…

对微软Web Deploy的一次艰难调试
2011年初开始做一个项目,开始体验使用微软网站发布工具来发布网站。在服务器端安装发布服务后,可以在Visual Studio界面中右键点击Web项目,再点发布,第一次填好发布设置,以后就可以实现一键发布,虽然还有不…

vue总结 08状态管理vuex
状态管理 类 Flux 状态管理的官方实现 由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长。为了解决这个问题,Vue 提供 vuex:我们有受到 Elm 启发的状态管理库。vuex 甚至集成到 vue-devtools,无需配…
java8 lambda 表达式详解
lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例可以将 lambda 表达式视为一个对象,可以将其作为参数传递1.…

【基础知识】win10常用快捷键
1、winctrlD 创建虚拟桌面 2、winctrl左右箭头 切换桌面 winctrlF4 关闭当前虚拟桌面 (按wintab 可以通过鼠标操作虚拟桌面的创建、切换与删除) 3、winM 全部窗口最小化 (winD 可在最小化全部窗口与恢复全部窗口状态 间自由切换 4、win数字 打开任务栏中从左到右的应用…