package com.looeywei.UserCRDUDemo.dao.impl;
import com.looeywei.UserCRDUDemo.dao.UserDao;
import com.looeywei.UserCRDUDemo.domain.User;
import com.looeywei.UserCRDUDemo.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
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 User findUserByUsernameAndPassword(String username, String password) {
try {
String sql = "select * from user where username = ? and password = ?";
User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password);
return user;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public void addUser(User user) {
String sql = "insert into user values(NULL, ?, ?, ?, ? ,?, ? , null, null)";
template.update(sql, user.getName(), user.getGender(), user.getAge(),
user.getAddress(), user.getQq(), user.getEmail());
}
@Override
public void delUser(int id) {
String sql = "delete from user where id = ?";
template.update(sql, id);
}
@Override
public User findUserById(int id) {
String sql = "select * from user where id = ?";
return template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), id);
}
@Override
public void updateUser(User user) {
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());
}
/**
* 查询总数量
* @return
* @param map
*/
@Override
public int findTotalCount(Map<String, String[]> map) {
// 定义初始sql
String sql = "select count(*) from user where 1 = 1 ";
StringBuilder sb = new StringBuilder(sql);
// 遍历map
Set<String> keySet = map.keySet();
// 参数集合
List<Object> params = new ArrayList<>();
for (String key : keySet) {
// 排除分页条件参数
if("currentPage".equals(key) || "rows".equals(key)){
continue;
}
// 获取value, 明确只有一个值
String value = map.get(key)[0];
if(value != null && !"".equals(value)){
sb.append(" and " + key + " like ? ");
params.add("%" + value + "%");
}
}
System.out.println(sb);
System.out.println(params);
int totalCount = template.queryForObject(sb.toString(), Integer.class, params.toArray());
return totalCount;
}
/**
* 分页查询
* @param start
* @param rows
* @param map
* @return
*/
@Override
public List<User> findByPage(int start, int rows, Map<String, String[]> map) {
String sql = "select * from user where 1 = 1 ";
StringBuilder sb = new StringBuilder(sql);
// 遍历map
Set<String> keySet = map.keySet();
// 参数集合
List<Object> params = new ArrayList<>();
for (String key : keySet) {
// 排除分页条件参数
if("currentPage".equals(key) || "rows".equals(key)){
continue;
}
// 获取value, 明确只有一个值
String value = map.get(key)[0];
if(value != null && !"".equals(value)){
sb.append(" and " + key + " like ? ");
params.add("%" + value + "%");
}
}
// 添加分页查询
sb.append(" limit ?, ? ");
params.add(start);
params.add(rows);
List<User> list = template.query(sb.toString(), new BeanPropertyRowMapper<>(User.class), params.toArray());
return list;
}
}
程序员张小妍
- 粉丝: 1w+
- 资源: 3594
最新资源
- C#利用Attribute实现面向切面编程(AOP)源码
- 碱性电解槽单元槽内流体均匀性设计,目前行业内单元槽主要分为圆形和方形结构单元槽,极板包括平板型,乳突型,棱型凹凸结构,分析单元槽内气液比,速度,压力,湍动能,涡分布,压损等
- lip-clarity-model.pth
- Yufeng-lidar
- 基于一致性算法改进的自适应阻抗控制研究,可以完美实现双机并联后线路阻抗引起的功率分布不均,下垂控制
- 基于C#开发的RFID读卡器上位机客户端,对卡的EPC信息进行读取采集并传输
- 一个基于C# 开发的串口上位机实例
- 使用 C#,开发一个气溶胶光学厚度反演算法的窗体应用程序
- 基于java的人职匹配推荐系统设计新版源码+数据库+说明
- 微生物细胞壁中S层蛋白的功能与结构解析及其应用前景
- fpn-fp-512.pth
- 【python机器人】基于Python的虚拟形象机器人.zip
- 【机器人】语义地图构建、定位导航、三维重构、重定位、动态物体识别、移动避障、手势识别、人脸识别、语音合成与识别等功能.zip
- 【C++】哔哩哔哩直播万能场控机器人,弹幕姬+答谢姬+回复姬+点歌姬+各种小骚操作,目前唯一可编程机器人.zip
- 【GO】可一键部署的VercelTelegram消息推送机器人.zip
- 【JavaScrip】一个傻妞机器人插件库.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈