package dao.impl;
import dao.UserDao;
import domain.User;
import domain.User1;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import util.JDBCUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class UserDaoImpl implements UserDao {
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public List<User> findAll() {
//使用Jdbc操作数据库
String sql="select * from user";
List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));
return users;
}
@Override
public User1 findUserByUsernameAndPassword(String username, String password) {
try {
String sql="select * from user1 where username=?and password=? ";
User1 user1 = template.queryForObject(sql, new BeanPropertyRowMapper<User1>(User1.class), username, password);
return user1;
} catch (DataAccessException e) {
e.printStackTrace();
return null;
}
}
@Override
public void add(User user) {
//1.定义sql
String sql = "insert into user values(null,?,?,?,?,?,?)";
//执行sql
template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail());
}
@Override
public void delete(int parseInt) {
//1.定义sql语句
String sql = "delete from user where id = ?";
//执行sql
template.update(sql,parseInt);
}
@Override
public User findByid(int parseInt) {
//1.sql语句
String sql = "select * from user where id = ?";
return template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),parseInt);
}
@Override
public void updateUser(User user) {
//1.sql语句
String sql = "update user set name = ? , gender = ?,age = ?,address = ?,qq=?,email = ? where id = ?";
template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail(),user.getId());
}
@Override
public int finTotalCount(Map<String,String[]> condition) {
//1.定义一个模板初始化sql
String sql = "select count(*) from user where 1 = 1 ";
StringBuilder sb = new StringBuilder(sql);
//2.遍历map
Set<String> keySet = condition.keySet();
//定义参数的集合
ArrayList<Object> params = new ArrayList<>();
for (String key : keySet) {
//排除分页条件参数
if ("currentPage".equals(key)||"rows".equals(key)){
continue;
}
//获取values
String value = condition.get(key)[0];
//判断value是否有值
if (value != null&& !"".equals(value)){
//有值
sb.append(" and "+ key +" like ? ");
params.add("%" + value +"%");//加条件的值
}
}
return template.queryForObject(sb.toString(),Integer.class,params.toArray());
}
@Override
public List<User> finByPage(int strat, int rows,Map<String,String[]> condition) {
String sql = "select * from user limit ? , ?";
return template.query(sql,new BeanPropertyRowMapper<User>(User.class),strat,rows);
}
}
Java学习资料 用户信息管理系统 Java学习资料javaweb第一个项目
需积分: 0 54 浏览量
更新于2023-06-21
收藏 11.29MB ZIP 举报
【Java学习资料与用户信息管理系统】是初学者进入Java Web开发领域的绝佳起点。在这个项目中,我们将探索如何利用Java技术栈构建一个简单的信息管理平台。Java作为一种广泛应用的编程语言,尤其在企业级应用中占据重要地位,而Java Web则是其在互联网领域的延伸,用于创建动态、交互式的Web应用程序。
我们需要理解Java的基础,包括语法、类、对象、接口等核心概念。掌握面向对象编程思想是Java学习的关键,这将帮助我们设计出可维护、可扩展的代码结构。同时,了解异常处理、集合框架(如List、Set、Map)以及多线程编程也是必要的。
在Java Web部分,我们首先会接触到Servlet,它是Java服务器端程序,用于接收HTTP请求并返回响应。Servlet API提供了处理Web请求和响应的方法。接着,我们将学习JSP(Java Server Pages),这是一种用于动态生成HTML的标记语言,可以将Java代码嵌入到HTML中,简化视图层的开发。
本项目中的"用户信息管理系统"可能会涉及到以下技术点:
1. 数据库设计:可能使用MySQL或Oracle等关系型数据库,进行用户数据的存储。我们需要学习SQL语言,用于查询、插入、更新和删除数据。
2. JDBC(Java Database Connectivity):它是Java与数据库交互的桥梁,通过JDBC API,我们可以编写代码来连接数据库、执行SQL语句和处理结果集。
3. MVC(Model-View-Controller)架构:这是Web开发中常见的设计模式,用于分离业务逻辑、数据模型和用户界面。在Java Web中,Struts、Spring MVC或Spring Boot框架都遵循这一模式。
4. JSTL(JavaServer Pages Standard Tag Library):为了减少JSP页面中的Java代码,提高可读性和可维护性,我们可以使用JSTL标签库。
5. Session和Cookie:在Web应用中,这些是用于管理用户状态和保持会话的主要手段。
6. Form表单和验证:用户输入的数据需要通过HTML表单提交,服务器端则需要进行验证,防止非法数据的提交。
7. 文件上传与下载:在用户信息管理系统中,可能需要处理用户头像或其他文件的上传和下载功能。
8. 安全性:学习如何保护系统免受SQL注入、XSS攻击等常见Web安全威胁。
9. 错误和异常处理:正确地捕获和处理程序运行时可能出现的错误,提供友好的用户体验。
通过这个项目,你将获得实际操作的经验,从需求分析、数据库设计、编码实现到测试部署,全方位提升你的Java Web开发技能。这是一个很好的起点,能够帮助你逐步理解并掌握Java Web开发的核心技术和流程。随着对这些知识点的深入理解和实践,你将能够独立完成更复杂的Web项目。
哆啦哆啦S梦
- 粉丝: 193
- 资源: 517
最新资源
- 小型液压打包机sw16可编辑全套技术资料100%好用.zip
- Comsol散射体手性 基板上的周期性金属阵列 散射光谱多极分解
- 具有多个领导者的平均一致包容分布式优化(需要安装cvx工具包)
- 小型立库自动进出料系统sw19可编辑全套技术资料100%好用.zip
- MATLAB 和Processing 的仿真环境用于对Stewart 平台问题进行建模,采用GUI界面进行控制 MATLAB 模型用于绘制腿部驱动图 该代码可以确保真实的模拟器腿不会超过操作范围内的
- 斯图尔特机器人Stewart平台 并联机构仿真 逆向运动学 simulink simscape ①首先在Solidworks中设计并导入 Matlab Simscape Multibody; ②设计控
- 预测太阳、月亮和行星的升起和落下-预测太阳、月亮和行星的升起和落下-matlab
- INFO-KELM回归,基于向量加权平均算法(INFO)优化核极限学习机(KELM)的数据回归预测(需要时序预测和分类都有),Matlab代码,可直接运行,适合小白新手 程序已经调试好,无需更改代码替
- 油漆桶外膜自动包装机ug10全套技术资料100%好用.zip
- 移载传送机sw18可编辑全套技术资料100%好用.zip
- 医用拖鞋筐子清洗烘干机sw18全套技术资料100%好用.zip
- 性能达到雷赛dm556步进电机驱动器全套资料
- 基于正弦PWM的永磁同步电机开环V/F控制-Open loop V/F control of PMSM using Sine PWM-matlab
- 自适应迭代无迹卡尔曼滤波算法AIUKF 锂离子电池SOC估计 递推最小二乘法辩识电池参数 具有良好的鲁棒性,初值误差为30%,仍能快速收敛 采用马里兰大学18650电池公开数据集 FUDS工况
- 基于FOC的永磁同步电机闭环速度控制-Closed Loop Speed Control of PMSM using FOC-matlab
- 电池二阶等效电路模型(2RC ECM) 基于最小二乘法的参数辩识代码 基于EKF的SOC估计代码 ps.有参考文献,可简单