电子商务网站建设前期,潍坊专业网站建设怎么收费,公众号推广渠道,店铺店面装修一、JdbcTemplate案例演示
1、创建数据库与表
#xff08;1#xff09;创建数据库
执行命令#xff1a;CREATE DATABASE simonshop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 或者利用菜单方式创建数据库 - simonshop
打开数据库simonshop
#x…一、JdbcTemplate案例演示
1、创建数据库与表
1创建数据库
执行命令CREATE DATABASE simonshop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 或者利用菜单方式创建数据库 - simonshop
打开数据库simonshop
2创建用户表
创建用户表 - t_user
CREATE TABLE t_user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(20) NOT NULL,password varchar(20) DEFAULT NULL,telephone varchar(11) DEFAULT NULL,register_time timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,popedom int(11) DEFAULT NULL COMMENT 0管理员1普通用户,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8mb4;
3用户表添加记录
给用户表添加4条记录
INSERT INTO t_user VALUES (1, admin, 12345, 15734345678, 2016-12-02 08:40:35, 0);
INSERT INTO t_user VALUES (2, 郑晓红, 11111, 13956567889, 2016-12-20 09:51:43, 1);
INSERT INTO t_user VALUES (3, 温志军, 22222, 13956678907, 2016-12-20 09:52:36, 1);
INSERT INTO t_user VALUES (4, 涂文艳, 33333, 15890905678, 2016-12-05 09:52:56, 1);
4查看用户表内容
用户表 - t_user有4条记录
2、打开Spring项目
Spring项目 - SpringDemo
3、添加数据库相关依赖
在pom.xml文件里添加相关依赖
!--Spring数据库支持--
dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version5.3.25/version
/dependency
!--数据库驱动工具包--
dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.49/version
/dependency
!--数据库连接池框架--
dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.16/version
/dependency
4、创建用户实体类
ORMObject Relation Mapping对象关系映射 用户表t_user对应的用户实体类User 表里的字段对应实体类的属性一条表记录对应一个实体对象 在net.hf.spring包里创建day06.bean子包然后在子包里面创建User类
package net.hf.spring.day06.bean;import java.util.Date;/*** 功能用户实体类* 作者hf* 日期2023年03月01日*/
public class User {private int id;private String username;private String password;private String telephone;private Date registerTime;private int popedom;public int getId() {return id;}public void setId(int id) {this.id id;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone telephone;}public Date getRegisterTime() {return registerTime;}public void setRegisterTime(Date registerTime) {this.registerTime registerTime;}public int getPopedom() {return popedom;}public void setPopedom(int popedom) {this.popedom popedom;}Overridepublic String toString() {return User{ id id , username username \ , password password \ , telephone telephone \ , registerTime registerTime , popedom popedom };}
}
5、创建用户数据访问接口
DAOData Access Object数据访问对象 在net.hf.spring包里创建day06.dao子包在子包里创建UserDao接口
package net.hf.spring.day06.dao;import net.hf.spring.day06.bean.User;import java.util.List;/*** 功能用户数据访问接口* 作者hf* 日期2023年03月01日*/
public interface UserDao {int insert(User user);int deleteById(int id);int update(User user);User findById(int id);ListUser findAll();User login(String username, String password);
}
6、创建用户数据访问接口实现类
Impl - Implementation 实现 在net.hf.spring.day06.dao包里创建impl子包然后在子包里创建UserDaoImpl类
package net.hf.spring.day06.dao.impl;import net.hf.spring.day06.bean.User;
import net.hf.spring.day06.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;/*** 功能用户数据访问接口实现类* 作者hf* 日期2023年03月01日*/
Repository(userDao)
public class UserDaoImpl implements UserDao {Autowiredprivate JdbcTemplate jdbcTemplate;/*** 插入用户记录** param user* return 插入记录数*/public int insert(User user) {// 定义字符串String strSQL INSERT INTO t_user (username, password, telephone, register_time, popedom) VALUES (?, ?, ?, ?, ?);// 调用模板的更新方法执行SQL语句return jdbcTemplate.update(strSQL, user.getUsername(),user.getTelephone(), user.getRegisterTime(), user.getPopedom());}/*** 按编号删除用户记录** param id* return 删除记录数*/public int deleteById(int id) {// 定义SQL字符串String strSQL DELETE FROM t_user WHERE id ?;// 调用模板的更新方法执行SQL语句return jdbcTemplate.update(strSQL, id);}/*** 更新用户记录** param user* return 更新记录数*/public int update(User user) {// 定义SQL字符串String strSQL UPDATE t_user SET username ?, password ?, telephone ?, register_time ?, popedom ? WHERE id ?;// 调用模板的更新方法执行SQL语句return jdbcTemplate.update(strSQL, user.getUsername(), user.getPassword(),user.getTelephone(), user.getRegisterTime(), user.getPopedom(), user.getId());}/*** 按编号查询用户记录** param id* return 用户对象*/public User findById(int id) {String strSQL SELECT * FROM t_user WHERE id ?;return jdbcTemplate.queryForObject(strSQL, new RowMapperUser() {// 行映射方法将用户表记录映射成用户实体Overridepublic User mapRow(ResultSet rs, int row) throws SQLException {// 创建用户表User user new User();// 从结果获取字段值设置用户对象属性user.setId(rs.getInt(id));user.setUsername(rs.getString(username));user.setPassword(rs.getString(password));user.setTelephone(rs.getString(telephone));user.setRegisterTime(rs.getTimestamp(register_time));user.setPopedom(rs.getInt(popedom));// 返回用户对象return null;}}, id);}/*** 查询全部用户记录** return 用户列表*/public ListUser findAll() {// 创建用户列表ListUser users new ArrayList();// 定义SQL字符串String strSQL SELECT * FROM t_user;// 查询获取行列表ListMapString, Object rows jdbcTemplate.queryForList(strSQL);// 遍历行列表生成用户列表for (MapString, Object row : rows) {// 创建用户对象User user new User();// 从行获取列值设置用户对象属性user.setId((Integer) row.get(id));user.setUsername((String) row.get(username));user.setPassword((String) row.get(password));user.setTelephone((String) row.get(telephone));user.setRegisterTime((Date) row.get(register_time));user.setPopedom((Integer) row.get(popedom));// 将用户对象添加到用户列表users.add(user);}// 返回用户列表return null;}/*** 用户登录** param username* param password* return 用户实体null登录失败not null登录成功*/public User login(String username, String password) {String strSQL SELECT * FROM t_user WHERE username ? AND password ?;return jdbcTemplate.queryForObject(strSQL, new RowMapperUser() {// 行映射方法将用户表记录映射成用户实体public User mapRow(ResultSet rs, int row) throws SQLException {// 创建用户对象User user new User();// 从结果集获取字段值设置用户对象属性user.setId(rs.getInt(id));user.setUsername(rs.getString(username));user.setPassword(rs.getString(password));user.setTelephone(rs.getString(telephone));user.setRegisterTime(rs.getTimestamp(register_time));user.setPopedom(rs.getInt(popedom));// 返回用户对象return user;}}, username, password);}
}
7、创建用户服务类
在net.hf.spring.day06包里创建service子包然后在子包里创建UserService类
package net.hf.spring.day06.service;import net.hf.spring.day06.bean.User;
import net.hf.spring.day06.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** 功能用户服务类* 作者hf* 日期2023年03月07日*/Service(userService)
public class UserService {Autowiredprivate UserDao userDao;public int addUser(User user) {return userDao.insert(user);}public int deleteUserById(int id) {return userDao.deleteById(id);}public int updateUser(User user) {return userDao.update(user);}public User findUserById(int id) {return userDao.findById(id);}public ListUser findAllUsers() {return userDao.findAll();}public User login(String username, String password) {return userDao.login(username, password);}
}
8、创建数据库配置属性文件
在resources目录里创建数据库配置属性文件 - jdbc.properties
jdbc.driverClassNamecom.mysql.jdbc.Driver
jdbc.urljdbc:mysql://localhost:3306/simonshop?useSSLfalse
jdbc.usernameroot
jdbc.passwordpssw0rd
注意密码要改成你安装MySQL时候设置的密码
9、创建Spring配置文件
在resources里创建Spring配置文件 - spring-config.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd!--组件扫描--context:component-scan base-packagenet.hf.spring.day06/!--声明属性占位符--context:property-placeholder locationjdbc.properties/!--定义数据源Bean--bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${jdbc.driverClassName}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//bean!--定义JDBC模板Bean--bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplateproperty namedataSource refdataSource//bean
/beans
10、创建用户服务测试类
在test/java目录的net.hf.spring包里创建day06.service子包然后在子包里创建TestUserService类
package net.hf.spring.day06.service;import org.junit.After;
import org.junit.Before;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能测试用户服务类* 作者hf* 日期2023年03月07日*/
public class TestUserService {private UserService userService; // 用户服务对象private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器Beforepublic void init() {// 基于Spring配置文件创建应用容器context new ClassPathXmlApplicationContext(spring-config.xml);// 根据名称从应用容器里获取用户服务对象userService (UserService) context.getBean(userService);}Afterpublic void destroy() {// 关闭应用容器context.close();}
}
1测试按编号查询用户方法
创建testFindUserById()方法
运行测试方法testFindUserById()查看结果
修改测试方法里的id值再运行查看结果 修改测试方法捕获异常再运行查看结果
2测试查询全部用户方法
创建testFindAllUsers()方法 3测试添加用户方法
创建testAddUser()方法
运行测试方法查看结果
查看用户表记录
4测试更新用户方法
创建testUpdateUser()方法
运行测试方法testUpdateUser()查看结果
查看用户表记录
5测试删除用户方法
创建testDeleteUserById()方法
运行测试方法testDeleteUserById()查看结果
查看用户表记录哇哈哈记录不见了
4、测试用户登录方法
创建testLogin()方法
运行测试方法testLogin()查看结果
修改testLogin()方法
运行测试方法查看结果