一.增删改查
Java后台的CRUD(增删改查)
* 登录逻辑思路:
* 1.登录有验证码,用户名,密码(postman测试)
* 2.servlet LoginServlet.java
* 1)乱码处理
* 2)得到前端的值
* 3)封装到VO,VO就是用于封装前端传递到后台的值
* 4)调用服务逻辑层
* 5)得到服务逻辑层传回的数据(DTO) 后端传递到前端的数据
* 6)将得到的数据转换为json对象传递到前端
* 3.service 服务逻辑层
* UserService.java
* UserServiceImpl.java 多态
* 1)判断验证码是否正确
* 2)对密码进行加密
* 3)将VO里面的数据复制到model里面
* 4)逻辑判断,传递到前端应该传什么数据
* 4.dao 数据持久层
* UserDao.java
* UserDaoImpl.java
* 1)封装sql语句
* 2)调用JDBC的查询方法
* 3)解析结果集ResultSet
* 5.JDBC 连接数据
* 1)加载驱动
* 2)得到数据库连接
* 3)编译sql语句
* 4)执行sql语句
* 5)返回得到的结果集
* 6)关闭连接
* ------------------------------------------
* 用户新增:思路
* 前端逻辑:
* 1.打开页面
* 2.输入用户信息
* 3.判断用户信息是否输入格式正确
* 4.提交信息到Java后台
* 后端逻辑:
* 1.servlet 六大步骤
* 2.service
* 1)将VO里面的数据复制到model
* 2)将密码加密
* 3)根据返回的结果判断是否返回什么ResultDto
* 3.dao
* 1)sql语句
* 2)调用JDBC
* 3)返回结果
* 4.JDBC
*----------------------------------------
* 删除用户:
* servlet 六大步骤
* service 逻辑处理
* dao sql编写
后台代码封装和文件上传
* 1.菜系:思路?学会画图:流程图,类图
* 1)对象:CuisineModel
* 2)表:cuisine 多了几个固定的列
* 3)web或者Java代码的编写(不分先后:可以同时开发)
* 4)web端:
* 1:创建html页面
* 2:用户输入信息:判断输入的格式是否正确
* 3:将信息提交给后台
* 5)Java端
* 1:servlet 六大步骤
* 2:service 服务逻辑处理
* 3:dao sql语句和解析结果集
* 6)JDBC的使用
*----------------------------------------------------
* 以后查询所有的时候,不能直接写select * from 表
* 必须跟一个分页:默认显示多少条数据
* mysql 书写关键字的顺序,分页放在最后
* 查询所有的时候,最好将根据当前条件查询的总条数得到
* 很多时候,我们需要得到最后一页,则用总条数除以每一页显示的条数即可
* 查询总条数一共和查询所有的条件一模一样,只不过查询所有多了一个分页
* -----------------------------------------------------
* 正常情况下,每一个表都应该有六个操作
* 增加
* 修改
* 删除
* 根据id查询
* 根据模糊查询
* 查询总条数
* ------------------------------------------------
* 注意:BaseVO不建议大家在这里用:因为用Lombok包的时候拿不到父类
* public interface BaseService<T> 这里泛型
* 产品思路?Java端
* 1:servlet
* 2:service 将DTO封装 将dao层提到全局变量
* 3:dao
* ----------------------------------
* 上传图片的时候,应该拿到一个图片在服务器上的地址,怎么拿?
* 思路:?
* 1.需要访问服务器的地址
* 2.在服务器得到前端的数据
* 3.将前端的数据封装到某个地方?(临时目录,缓存)
* 4.将文件保存到具体地址
* 5.将保存的地址返回给前端
* 注意:默认图片保存到out里面,这里需要将图片复制到web目录下
*/
/**
二.代码逻辑
@Override
public ResultDTO add(UserVO userVO) {
UserModel model = JSONCopy.copy(userVO, UserModel.class);
// String mingwen = model.getPassword();
// String anwen = Md5.encoderByMd5(mingwen);
// model.setPassword(anwen);
model.setPassword(Md5.encoderByMd5(model.getPassword()));
// 对于dao层来说,返回的应该是影响的条数
int count = userDao.add(model);
ResultDTO resultDTO = ResultDTO.builder().count(count).build();
return resultDTO;
}
@Override
public ResultDTO update(UserVO userVO) {
UserModel model = JSONCopy.copy(userVO, UserModel.class);
int count = userDao.update(model);
ResultDTO resultDTO = ResultDTO.builder().count(count).build();
return resultDTO;
}
/**
* 修改密码逻辑
*
* @param userVO
* @return
*/
@Override
public ResultDTO updatePassword(UserVO userVO) {
/**
* 1.根据id或者用户名查询原密码是否正确
* 2.如果不正确,则不能修改
* 3.如果正确,则直接修改
*/
ResultDTO resultDTO = ResultDTO.builder().build();
UserModel model = JSONCopy.copy(userVO, UserModel.class);
model.setPassword(Md5.encoderByMd5(userVO.getOldPassword()));
// UserModel userModel = userDao.findByUsernameAndPassword(model);
UserModel userModel = userDao.findByIdAndPassword(model);
if (userModel == null) {
resultDTO.setCode(-1);
resultDTO.setMsg("原密码不正确,请重新输入");
} else {
model.setPassword(Md5.encoderByMd5(userVO.getNewPassword()));
int count = userDao.updatePassword(model);
if (count > 0) {
resultDTO.setCode(0);
resultDTO.setMsg("修改成功");
} else {
resultDTO.setCode(-1);
resultDTO.setMsg("修改失败");
}
}
return resultDTO;
}
@Override
public ResultDTO delete(UserVO userVO) {
ResultDTO resultDTO = ResultDTO.builder().build();
UserModel model = JSONCopy.copy(userVO, UserModel.class);
int count = userDao.delete(model);
if (count > 0) {
resultDTO.setCode(0);
resultDTO.setMsg("删除成功");
} else {
resultDTO.setCode(-1);
resultDTO.setMsg("删除失败");
}
return resultDTO;
}
@Override
public ResultDTO findById(UserVO userVO) {
ResultDTO resultDTO = ResultDTO.builder().build();
UserModel model = JSONCopy.copy(userVO, UserModel.class);
UserModel userModel = userDao.findById(model);
if (userModel == null) {
resultDTO.setCode(-1);
resultDTO.setMsg("没有查询到数据");
} else {
resultDTO.setCode(1);
resultDTO.setMsg("");
resultDTO.setData(userModel);
}
return resultDTO;
}
@Override
public ResultDTO findAll(UserVO userVO) {
// ResultDTO resultDTO = ResultDTO.builder().build();
UserModel model = JSONCopy.copy(userVO, UserModel.class);
// List<UserModel> userModelList = userDao.findAll(model);
// resultDTO.setCode(1);
// resultDTO.setMsg("");
// resultDTO.setCount(userModelList.size());
// resultDTO.setData(userModelList);
// return resultDTO;
return ResultDTO.getDTO(userDao.count(model), userDao.findAll(model));
}
}