对于一个bean而言,需要下列的注释。
//需要在IDEA的插件市场中搜索LomBok插件并安装
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class Customer {
private String username;
private String password;
private String address ;
private Integer age ;
//构造器(无参 + 有参)
//get/set
//tostring
//....
}
控制层
@RestController // @Controller + @ResponseBody //标识为控制层。
public class CustomerController {
//SpringBoot
@Autowired //从Spring容器中找到对应类型的对象, 注入过来
@Qualifier("customerServiceImplNew") // 明确指定将哪个对象注入过来,注入的是对应类的对象,显然是接口实现的类对应的对象。
CustomerService customerService ;
/**
* http://localhost:8080/login?username=zhangsan&password=123456
*/
@GetMapping("login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password){
//业务处理
//在每个方法中创建业务层对象, 不好.
//CustomerServiceImpl customerService = new CustomerServiceImpl();
String result = customerService.doLogin(username, password);
return result ;
}
}
业务层
/**
* 业务层接口
*/
public interface CustomerService {
String doLogin(String username , String password );
}
@Service //标识为业务层组件
public class CustomerServiceImpl implements CustomerService {
@Autowired // 对象的注入
CustomerMapper customerMapper ;
@Override
public String doLogin(String username, String password) {
System.out.println("CustomerServiceImpl : 复杂的业务处理");
//数据非空校验
//数据格式的校验
//。。。。。。
// 调用数据层,比对数据库中的数据是否一致
Customer customer = customerMapper.searchByUsernameAndPassword(username, password);
if(customer != null ){
return "ok";
}else{
return "error";
}
}
}
数据层
/**
* 数据层接口
*
* 目前,数据层一般都是基于MyBatis实现的。MyBatis的玩法是只写接口+SQL即可,不需要自己写实现类.
*/
public interface CustomerMapper {
Customer searchByUsernameAndPassword(String username, String password) ;
}
/**
* 数据层组件
*/
@Repository //标识成数据层组件(Spring)
public class CustomerMapperImpl implements CustomerMapper {
@Override
public Customer searchByUsernameAndPassword(String username, String password) {
System.out.println( "CustomerMapperImpl: 数据库的查询操作.... ");
//具体的数据库的连接。
// JDBC
// MyBatis
// Hibernate
// .....
return new Customer(username, password , null ,null );
//return null ;
}
}