2023.3.9学习日志

一.增删改查

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));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值