SSM 实训笔记 -08- 使用 Spring JDBC Template 对数据库查询(登录)和删除(maven)
Spring JDBC 提供了 Spring JDBC Template,大大简化了对数据库的操作,其中JdbcTemplate 是最常用的,下面介绍
本篇内容:
(1)使用 Spring JDBC Template 查询并显示所有表中信息
(2)点击删除后,通过模板,对数据删除
一、创建数据库,插入数据
(建议名称一致)
(1)安装 MySQL 请百度或参考:MySQL 安装 + 入门大全 + 常用命令合集
(2)打开 cmd ,登录 mysql 的 root 用户,创建 studb 数据库,创建表 tb_user :
(3)显示表结构,插入 3 条用户数据:
(4)数据库 studb,表 tb_user 创建好了。
二、创建项目、配置
(1)创建项目就不多说了,请参考:SSM 实训笔记 -05- 创建 Maven Web 项目 + Tomcat 及目录结构配置
(2)上面的创建项目内容全部需要
(3)配置 Maven 的 pom.xml 文件,添加两个依赖:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
(4)在 resources 下创建 啊 applicationContext.xml 文件:
(5)填写如下配置,自行修改为自己的数据库信息:
<?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.xsd">
<!--相当于 conn 数据库数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/studb?serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value="xiaopengwei"></property>
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
</bean>
<!--产生实例-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
(6)下面需要先做一件事,就是在 js 目录中,引入 Bootstrap3 和 jQuery
注意:只能是 Bootstrap3 版本:
配置步骤:
- 安装 Node.js ,因为要使用 npm
- 在项目中 js 目录,右键 Open in Explorer 可以打开该目录,并复制
- 在 cmd 进入项目的 js 目录
- 使用命令:
npm install bootstrap3
npm install jQuery
三、项目源代码:
先根据目录结构创建好项目,准备粘贴代码。
整体项目目录结构:
前端页面:
后端目录及文件:
前端页面源代码:
(1)login_ajax.html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
<link rel="stylesheet" href="js/node_modules/bootstrap3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="js/node_modules/bootstrap3/dist/css/bootstrap-theme.css">
<script type="text/javascript" src="js/node_modules/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
function login() {
var uname = $("#uname").val();
var upwd = $("#upwd").val();
if (uname == null || uname == "") {
$("#unameMsg").html("用户名不能为空!");
return;
} else
$("#unameMsg").html("");
if (upwd.length == 0) {
$("#upwdMsg").html("密码不能为空!");
return;
} else
$("#upwdMsg").html("");
if (upwd.length < 6 || upwd.length > 12) {
$("#upwdMsg").html("密码应该在 6-12 位之间!");
return;
} else
$("#upwdMsg").html("");
$.ajax({
url: "Servlet",
method: "get",
data: {
"uname": $("#uname").val(),
"upwd": $("#upwd").val(),
"role": $("#role").val()
},
success: function (result) {
if (result == "1") {
// findUserInfoForAjax.html
window.location.href = "index.html";
} else {
$("#loginMsg").html("登录失败,请重试!");
}
},
error: function () {
alert("请求服务器失败!");
}
});
}
// eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('c n(){f 4=$("#4").5();f 3=$("#3").5();7(4==m||4==""){$("#g").2("l!");a}9 $("#g").2("");7(3.b==0){$("#8").2("q!");a}9 $("#8").2("");7(3.b<6||3.b>h){$("#8").2("p 6-h o!");a}9 $("#8").2("");$.j({i:"k",A:"B",C:{"4":$("#4").5(),"3":$("#3").5(),"d":$("#d").5()},D:c(e){7(e=="1"){E.t.u="r.2"}9{$("#s").2("x,y!")}},v:c(){w("z!")}})}',41,41,'||html|upwd|uname|val||if|upwdMsg|else|return|length|function|role|result|var|unameMsg|12|url|ajax|servlet|用户名不能为空|null|login|位之间|密码应该在|密码不能为空|findUserInfoForAjax|loginMsg|location|href|error|alert|登录失败|请重试|请求服务器失败|method|get|data|success|window'.split('|'),0,{}))
</script>
</head>
<body>
<br><br>
<br><br>
<form name="loginForm" id="loginForm">
<div class="center-block" style="width: 45%;height: 350px">
<div class="panel panel-primary">
<div class="panel-heading">
<span class="glyphicon glyphicon-apple"></span>用户登录
</div>
<div class="panel-body">
<div class="text-success" align="center">
<h3>欢迎使用资源统一管理系统</h3>
</div>
<div class="input-group">
<label class="input-group-addon">用户名</label>
<input class="form-control" type="text" id="uname" name="uname" placeholder="请输入用户名">
<label class="input-group-addon text-warning">*</label>
</div>
<label id="unameMsg" style="color: red"></label><br>
<div class="input-group">
<label class="input-group-addon">密 码</label>
<input class="form-control" type="password" id="upwd" name="upwd" placeholder="请输入密码">
<label class="input-group-addon text-warning">*</label>
</div>
<label id="upwdMsg" style="color: red"></label><br>
<div class="input-group">
<label class="input-group-addon">权 限</label>
<select id="role" name="role" class="form-control ">
<option value="admin">管理员</option>
<option value="teacher">教师</option>
<option value="student">学生</option>
</select>
</div>
</div>
<div align="center">
<label id="loginMsg" style="color: red"></label>
<a href="javascript:login()" class="btn btn-danger"><span
class="glyphicon glyphicon-log-in"></span> 登录</a>
<a href="javascript:loginForm.reset()" class="btn btn-primary"><span
class="glyphicon glyphicon-remove"></span> 重置</a>
</div>
<br>
<div class="panel-footer">
<div align="center">
©2018-2019 肖朋伟的 CSDN 博客 Copy Right
</div>
</div>
</div>
</div>
</form>
</body>
</html>
(2)findUserInfoForAjax.html 前端展示数据页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>findUserInfoForAjax</title>
<link rel="stylesheet" href="js/node_modules/bootstrap3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="js/node_modules/bootstrap3/dist/css/bootstrap-theme.css">
<script type="text/javascript" src="js/node_modules/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="js/node_modules/bootstrap3/dist/js/bootstrap.min.js"></script>
<script>
function addUserInfo() {
$.post("deleteUserByIdServlet",{"uname":$("#uname").val(),"role":$("#role").val()},function (data) {
if (data == "true"){
alert("添加成功!");
findAllUser();
} else {
alert("添加失败!");
}
});
}
function showAddModal() {
$("#myModal").modal("show");
}
//删除
function deleteUserById(id) {
$.ajax({
url:"deleteUserByIdServlet",
data:{"id":id},
success:function (result) {
if (result=="true"){
findAllUser();
} else {
alert("删除记录失败!");
}
},error:function () {
alert("访问服务器失败")
}
})
}
//查询
function findAllUser() {
$.ajax({
// url:"http://10.2.21.34:8080/StudentSystem/userServletForAjax",
url:"userServletForAjax",
method:"get",
success:function (result) {
var obj = JSON.parse(result);
var str = "";
$.each(obj,function (index,row,ee) {
str+="<tr><td>"+row.id+"</td><td>"+row.uname+"</td><td>"
+row.upwd+"</td><td>"+row.lastLoginTime+"</td><td>"+row.role+"</td><td>"
+"<a href='javascript:deleteUserById(\""+row.id+"\")' title='删除' onclick='return confirm(\"是否真的删除记录?\")'><span class='glyphicon glyphicon-remove'></span>删除</a></td></tr>"
});
$("#alluser").html(str);
},
error:function () {
alert("服务器请求失败")
}
})
}
findAllUser();
</script>
</head>
<body>
<div class="well">
<a class="btn btn-primary btn-lg" onclick="showAddModal()"><span class="glyphicon glyphicon-plus"></span>添加</a>
</div>
<table class="table table-striped table-hover">
<tr>
<td>id</td>
<td>uname</td>
<td>upwd</td>
<td>lastLoginTime</td>
<td>role</td>
<td>操作</td>
</tr>
<tbody id="alluser">
</tbody>
</table>
<!-- 按钮触发模态框 -->
<!--<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">开始演示模态框</button>-->
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">添加用户信息</h4>
</div>
<div class="modal-footer">
<div>
<!--输入框内容-->
<div class="input-group">
<input id="uname" type="text" class="form-control" placeholder="请输入用户名">
<span class="glyphicon glyphicon-user input-group-addon"></span>
</div>
<br>
<select id="role" name="role" class="form-control ">
<option value="">请选择</option>
<option value="admin">管理员</option>
<option value="teacher">教师</option>
<option value="student">学生</option>
</select>
</div>
<br>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="addUserInfo()">添加</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
</body>
</html>
(3)index.html 前端首页:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>后台管理系统首页</title>
<link rel="stylesheet" href="js/node_modules/bootstrap3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="js/node_modules/bootstrap3/dist/css/bootstrap-theme.css">
<script type="text/javascript" src="js/node_modules/jquery/dist/jquery.min.js"></script>
<script src="js/node_modules/bootstrap3/dist/js/bootstrap.min.js"></script>
</head>
<body>
<!--登录导航栏-->
<div class="nav navbar-fixed-top navbar-inverse">
<h3 style="color: brown" class="col-lg-offset-1"><label class="glyphicon glyphicon-apple"></label> ***后台管理系统</h3>
</div>
<div class="row">
<!--中间,左边-->
<div class="col-lg-3 col-md-3 col-sm-3">
<br><br><br>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion"
href="#collapseOne">
<h4 class="panel-title" align="center">
用户管理
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item"><a href="findUserInfoForAjax.html" target="subpage"
style="width: 100%;height: 100%">用户管理</a></li>
<li class="list-group-item">文件管理</li>
<li class="list-group-item">图像数量</li>
<li class="list-group-item">
<span class="badge">新</span>
用户消息
</li>
<li class="list-group-item">用户信息</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-success">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion"
href="#collapseTwo">
<h4 class="panel-title" align="center">
部门管理
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse">
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item"><a href="findUserInfoForAjax.html" target="subpage"
style="width: 100%;height: 100%">用户管理</a></li>
<li class="list-group-item">文件管理</li>
<li class="list-group-item">图像数量</li>
<li class="list-group-item">
<span class="badge">新</span>
用户消息
</li>
<li class="list-group-item">用户信息</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion"
href="#collapseThree">
<h4 class="panel-title" align="center">
信息管理
</h4>
</div>
<div id="collapseThree" class="panel-collapse collapse">
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item"><a href="findUserInfoForAjax.html" target="subpage"
style="width: 100%;height: 100%">用户管理</a></li>
<li class="list-group-item">文件管理</li>
<li class="list-group-item">图像数量</li>
<li class="list-group-item">
<span class="badge">新</span>
用户消息
</li>
<li class="list-group-item">用户信息</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-warning">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion"
href="#collapseFour">
<h4 class="panel-title" align="center">
权限管理
</h4>
</div>
<div id="collapseFour" class="panel-collapse collapse">
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item"><a href="findUserInfoForAjax.html" target="subpage"
style="width: 100%;height: 100%">用户管理</a></li>
<li class="list-group-item">文件管理</li>
<li class="list-group-item">图像数量</li>
<li class="list-group-item">
<span class="badge">新</span>
用户消息
</li>
<li class="list-group-item">用户信息</li>
</ul>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#collapseFour').collapse({
toggle: true
})
});
$(function () {
$('#collapseTwo').collapse('show')
});
$(function () {
$('#collapseThree').collapse('toggle')
});
$(function () {
// $('#collapseOne').collapse('hide')
$('#collapseOne').collapse('show')
});
</script>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<br><br><br>
<iframe name="subpage" frameborder="0" src="index.jsp" style="width: 100%;height: 80em"></iframe>
</div>
</div>
<!--row-->
<!--底部栏-->
<div align="center" class="navbar-fixed-bottom" style="background-color: lavender">
© 2018-2019 肖朋伟
</div>
</body>
</html>
后台页面源代码:
(4)pojo/User.java 文件:
package com.pojo;
//用来存放用户登录时,输入输出的信息
public class User {
private int id;
private String uname;
private String upwd;
private String lastLoginTime;
private String role;
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 getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public String getLastLoginTime() {
return lastLoginTime;
}
public void setLastLoginTime(String lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
(5)service/UserService.java 文件:
package com.service;
//服务层,给控制层提供服务
import com.dao.UserDAO;
import com.dao.UserDAO_JT;
import com.pojo.User;
import java.util.List;
public class UserService {
//使用模板的添加
public boolean addUserInfo(User user){
int i = dao_jt.addUserInfo(user);
if (i>0)
return true;
else
return false;
}
//DBUtils 方法
//UserDAO dao = new UserDAO();
//使用 jdbc Template
UserDAO_JT dao_jt = new UserDAO_JT();
//使用 jdbc Template 删除
public boolean deleteUserById(String id){
int i = dao_jt.deleteUserById(id);
if (i>0){
return true;
}else {
return false;
}
}
/*存用户数据,DBUtils 方法
public List<User> findAllUser(){
return dao.findAllUser();
}
*/
//使用 jdbc Template 查询
public List<User> findAllUser(){
// return dao_jt.findAllUser();
return dao_jt.findAllUser();
}
//登录,使用DBUtils 方法
//参数,处理 User 对象,返回 True 或 False
/*
public boolean login(User user){
int temp = dao.login(user);
if (temp == 0)
return false;
else
return true;
}*/
public boolean login(User user){
int temp = dao_jt.login(user);
if (temp == 0)
return false;
else
return true;
}
}
(6)dao/UserDAO_JT.java 文件:
package com.dao;
import com.dbutil.DBUtils;
import com.pojo.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class UserDAO_JT {
//使用模板的添加
public int addUserInfo(User user){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jt = (JdbcTemplate) ac.getBean("jdbcTemplate");
String sql = "insert into tb_user(uname,upwd,role) values(?,md5(?),?)";
int roNum = jt.update(sql, user.getUname(), "000000", user.getRole());
return roNum;
}
//使用模板 的删除
public int deleteUserById(String id){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) ac.getBean("jdbcTemplate");
String sql = "delete from tb_user where id=?";
int update = jdbcTemplate.update(sql,new String[]{id});
return update;
}
//使用模板 的查询
public List<User> findAllUser(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) ac.getBean("jdbcTemplate");
String sql = "select * from tb_user";
//System.out.println("执行。。。");
// List<User> userList = jt.queryForList(sql,User.class);
List<User> userList = jdbcTemplate.query(sql, new Object[]{}, new BeanPropertyRowMapper<User>(User.class));
if(null!=userList&&userList.size()>0){
User user = userList.get(0);
}
//下面不会执行
System.out.println("执行。。。");
return userList;
}
//使用 模板的登录,待完善
public int login(User user){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) ac.getBean("jdbcTemplate");
String sql = "select * from tb_user where uname=? and upwd=md5(?)";
//System.out.println("111");
List<User> maps = jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class),new String[]{user.getUname(),user.getUpwd()});
//System.out.println("222");
return maps.size();
}
}
(7)loginServlet/Servlet.java 文件:
package com.loginServlet;
import com.pojo.User;
import com.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "Servlet",urlPatterns = "/Servlet")
//最开始的 post 传参数,同步登录请求
public class Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
request.setCharacterEncoding("utf-8");
//获取 post 请求中的两个参数
String uname = request.getParameter("uname");
String upwd = request.getParameter("upwd");
String role = request.getParameter("role");
/*硬编码, 不从数据库获取信息,直接验证
if (uname.equals("admin") && upwd.equals("123456")) {
response.sendRedirect("index.jsp");
}else{
response.sendRedirect("loginServlet.html");
}*/
//从服务获取值
UserService userService = new UserService();
User user = new User();
user.setUname(uname);
user.setUpwd(upwd);
user.setRole(role);
if (userService.login(user)) {
//向服务器要数据
//登录成功跳转 index.jsp
response.sendRedirect("index.jsp");
}else{
response.sendRedirect("failed.jsp");
}
}
//使用 ajax 的异步登录
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname = request.getParameter("uname");
String upwd = request.getParameter("upwd");
String role = request.getParameter("role");
System.out.println("doGet");
System.out.println(uname+":"+upwd+"-"+role);
UserService userService = new UserService();
User user = new User();
user.setUname(uname);
user.setUpwd(upwd);
user.setRole(role);
boolean login = userService.login(user);
PrintWriter out = response.getWriter();
if (login)
out.print("1");
else
out.print("0");
out.close();
}
}
(8)loginServlet/DeleteUserByIdServlet.java 文件:
package com.loginServlet;
import com.pojo.User;
import com.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "DeleteUserByIdServlet",urlPatterns = "/deleteUserByIdServlet")
public class DeleteUserByIdServlet extends HttpServlet {
//使用模板的添加
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname = request.getParameter("uname");
String role = request.getParameter("role");
UserService userService = new UserService();
User user = new User();
user.setUname(uname);
user.setRole(role);
boolean b = userService.addUserInfo(user);
PrintWriter out = response.getWriter();
out.print(b);
out.close();
}
//使用 ajax 的异步删除
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
UserService userService = new UserService();
boolean temp = userService.deleteUserById(id);
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print(temp);
out.close();
}
}
(9)loginServlet/UserServletForAjax.java 文件:
package com.loginServlet;
import com.alibaba.fastjson.JSON;
import com.pojo.User;
import com.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
@WebServlet(name = "UserServletForAjax", urlPatterns = "/userServletForAjax")
public class UserServletForAjax extends HttpServlet {
//什么都没有
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
}
//使用 ajax 的异步查询数据库信息
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserService userService = new UserService();
List<User> allUser = userService.findAllUser();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String jsonStr = JSON.toJSONString(allUser);
out.print(jsonStr);
out.close();
System.out.println("doGet");
}
}
(10)applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--相当于 conn 数据库数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/studb?serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value="xiaopengwei"></property>
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
</bean>
<!--产生实例-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
四、运行调试
更多文章链接:
支持博主
我正在参加 CSDN 2018 年博客之星评选,希望大家能支持我,
我是【No. 001】号 肖朋伟 ,感谢大家宝贵的一票 ^_^/
投票地址:https://bss.csdn.net/m/topic/blog_star2018/index