package com.xs.service;
import com.xs.domain.Girl;
import com.xs.enums.ResultEnum;
import com.xs.exception.GirlException;
import com.xs.repository.GirlRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 直接在右边的文件框里编辑你说需要注释的东西,
* 然后应用保存之后,当你创建类的时候就会自动生成注释。
*/
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
@Transactional //启动事物注解:除了查询不用开启事务,其他对数据库的操作推荐添加事物注释
public void insertTwo() {
Girl girlA = new Girl();
girlA.setCupSize("A");
girlA.setAge(18);
girlRepository.save(girlA);
Girl girlB = new Girl();
girlB.setCupSize("D");
girlB.setAge(23);
girlRepository.save(girlB);
}
public void getAge(Integer id) throws Exception {
Girl girl = girlRepository.findOne(id);
Integer age = girl.getAge();
if (age < 10) {
//总结B:解决逻辑在一个地方处理,另一个地方不需要再接收它返回的信息,
//所以这里引入了异常GirlException(默认的异常只接受msg,但是我们这里还有code,所以我们定义了一个自己的异常)
//有了异常,我们要捕获它,所以又写了一个捕获异常的类ExceptionHandle-跳过去看总结C
//返回你还在上小学吧 code=100
//写法一:不能满足code=100,101两种情况,同时同了枚举进行统一维护跟管理
//throw new Exception("你还在上小学吧");
//写法二:解决了写法一的问题:自己写了一个异常方法并替换Exception为GirlException
throw new GirlException(ResultEnum.PRIMARY_SCHOOL);
} else if (age > 10 && age < 16) {
//返回你可能在上初中 code=101
//throw new Exception("你可能在上初中");
throw new GirlException(ResultEnum.MIDDLE_SCHOOL);
}
//如果大于16岁,加生活费
//...
}
//单元测试
//一般在执行单元打包的时候就会帮我们进行单元测试-也可以通过命令来跳过打包验证
//通过id查询一个女生信息
//自动创建测试类:点击方法名-右键goto-test-显示有/创建-勾选要测试的方法-OK
public Girl findOne(Integer id) {
return girlRepository.findOne(id);
}
}
import com.xs.domain.Girl;
import com.xs.enums.ResultEnum;
import com.xs.exception.GirlException;
import com.xs.repository.GirlRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 直接在右边的文件框里编辑你说需要注释的东西,
* 然后应用保存之后,当你创建类的时候就会自动生成注释。
*/
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
@Transactional //启动事物注解:除了查询不用开启事务,其他对数据库的操作推荐添加事物注释
public void insertTwo() {
Girl girlA = new Girl();
girlA.setCupSize("A");
girlA.setAge(18);
girlRepository.save(girlA);
Girl girlB = new Girl();
girlB.setCupSize("D");
girlB.setAge(23);
girlRepository.save(girlB);
}
public void getAge(Integer id) throws Exception {
Girl girl = girlRepository.findOne(id);
Integer age = girl.getAge();
if (age < 10) {
//总结B:解决逻辑在一个地方处理,另一个地方不需要再接收它返回的信息,
//所以这里引入了异常GirlException(默认的异常只接受msg,但是我们这里还有code,所以我们定义了一个自己的异常)
//有了异常,我们要捕获它,所以又写了一个捕获异常的类ExceptionHandle-跳过去看总结C
//返回你还在上小学吧 code=100
//写法一:不能满足code=100,101两种情况,同时同了枚举进行统一维护跟管理
//throw new Exception("你还在上小学吧");
//写法二:解决了写法一的问题:自己写了一个异常方法并替换Exception为GirlException
throw new GirlException(ResultEnum.PRIMARY_SCHOOL);
} else if (age > 10 && age < 16) {
//返回你可能在上初中 code=101
//throw new Exception("你可能在上初中");
throw new GirlException(ResultEnum.MIDDLE_SCHOOL);
}
//如果大于16岁,加生活费
//...
}
//单元测试
//一般在执行单元打包的时候就会帮我们进行单元测试-也可以通过命令来跳过打包验证
//通过id查询一个女生信息
//自动创建测试类:点击方法名-右键goto-test-显示有/创建-勾选要测试的方法-OK
public Girl findOne(Integer id) {
return girlRepository.findOne(id);
}
}