持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
1.entity实体类创建
新建user类文件
package com.imooc.oa.entity;
public class User {
private String userName;
private String password;
private Long employeeId;
//getter和setter省略,可通过idea自动生成
}
2.mapper新增xml文件
新建user.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="usermapper">
<select id="selectByUserName" parameterType="String" resultType="com.imooc.oa.entity.User">
select * from sys_user where username=#{value}
</select>
</mapper>
代码说明:
- namespace="usermapper":用来说明mapper文件的命名空间
- id="selectByUserName":用来说明mapper查询的唯一标识
- parameterType="String":用来说明参数的类型
- resultType="com.imooc.oa.entity.User":用来说明返回User实体
- where username=#{value}:参数值使用 #{参数名}
3.配置mybatis-config.xml
4.新增包dao层
新增UserDao类文件
package com.imooc.oa.dao;
import com.imooc.oa.entity.User;
import com.imooc.oa.utils.MybatisUtils;
public class UserDao {
public User selectByUserName(String userName) {
User user = (User) MybatisUtils.executeQuery(sqlSession ->
sqlSession.selectOne("usermapper.selectByUserName", userName));
return user;
}
}
代码说明:
- (User) MybatisUtils.executeQuery:调用MybatisUtils的查询方法
- qlSession.selectOne("usermapper.selectByUserName", userName):usermapper.selectByUserName是我们定义的user.xml文件,通过namespace.select("id")的方法选择不同的sql语句
5.新建service包
5.1在service新增excepton包并且新建BusinessException异常类,用来处理业务异常
package com.imooc.oa.service.exception;
public class BusinessException extends RuntimeException {
private String code;
private String message;
public BusinessException(String code,String msg){
super(code+":"+msg);
this.code = code;
this.message = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
代码说明:
- BusinessException extends RuntimeException:业务异常类继承运行异常类
5.2新增userService类文件
package com.imooc.oa.service;
import com.imooc.oa.dao.UserDao;
import com.imooc.oa.entity.User;
import com.imooc.oa.service.exception.BusinessException;
public class UserService {
private UserDao userDao= new UserDao();
public User checkLogin(String userName,String password){
User user = userDao.selectByUserName(userName);
if(user==null){
throw new BusinessException("L001","用户名不存在");
}
if(!user.getPassword().equals(password)){
throw new BusinessException("L002","密码错误");
}
return user;
}
}
代码说明:
- userDao.selectByUserName:根据用户名查找用户是否存在
- !user.getPassword().equals(password):根据查询出来的密码和传递的password是否相等,如果相等,这说明该用户合法
- throw new BusinessException:用来处理业务异常
6.单元测试
在userService中新增测试用例,idea会自动在test生成对应的代码
创建之后
新增三个测试用例:分别对应用户不存在;用户名正确,密码错误;密码和用户名都正确
package com.imooc.oa.service;
import com.imooc.oa.entity.User;
import junit.framework.TestCase;
public class UserServiceTest extends TestCase {
UserService userService = new UserService();
public void test1(){
User user = userService.checkLogin("admin","123");
}
public void test2(){
User user = userService.checkLogin("t5","123");
}
public void test3(){
User user = userService.checkLogin("m8","f57e762e3fb7e1e3ec8ec4db6a1248e1");
}
}
运行三个测试用例