DepartmentMapper.java
public interface DepartmentMapper {
int deleteByPrimaryKey(Integer deptno);
int insert(Department record);
Department selectByPrimaryKey(Integer deptno);
List<Department> selectAllDepartment();
int updateByPrimaryKey(Department record);
}
DepartmentMapperImpl.java
package com.loey.mapper;
import com.loey.model.Department;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.*;
/**
* @ClassName DepartmentMapperImpl
* @Author loey
* @Date Create in 2021/1/1 21:44
* @Version 1.0
**/
@Repository
public class DepartmentMapperImpl implements DepartmentMapper {
private static Map<Integer,Department> map = null;
static{
map = new HashMap<Integer,Department>();
map.put(10,new Department(10,"人事部","北京"));
map.put(20,new Department(20,"财务部","北京"));
map.put(30,new Department(30,"后勤部","北京"));
}
@Override
public int deleteByPrimaryKey(Integer deptno) {
map.remove(deptno);
return 0;
}
@Override
public int insert(Department record) {
Integer deptno = record.getDeptno();
map.put(deptno,record);
return 0;
}
@Override
public Department selectByPrimaryKey(Integer deptno) {
Department department = map.get(deptno);
return department;
}
@Override
public List<Department> selectAllDepartment() {
List<Department> departments = (List<Department>) map.values();
return departments;
}
@Override
public int updateByPrimaryKey(Department record) {
Integer deptno = record.getDeptno();
map.put(deptno,record);
return 0;
}
}
EmployeeMapper.java
package com.loey.mapper;
import com.loey.model.Employee;
import java.util.List;
public interface EmployeeMapper {
int deleteByPrimaryKey(Integer empno);
int insert(Employee record);
Employee selectByPrimaryKey(Integer empno);
List<Employee> selectAllEmployees();
int updateByPrimaryKey(Employee record);
}
EmployeeMapperImpl.java
package com.loey.mapper;
import com.loey.model.Department;
import com.loey.model.Employee;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import java.util.*;
/**
* @ClassName EmployeeMapperImpl
* @Author loey
* @Date Create in 2021/1/1 18:50
* @Version 1.0
**/
@Repository
public class EmployeeMapperImpl implements EmployeeMapper {
// @Autowired不能给静态变量注入
private static DepartmentMapper departmentMapper;
@Autowired
private DepartmentMapper myDepartmentMapper;
@PostConstruct
public void init(){
departmentMapper = this.myDepartmentMapper;
System.out.println(departmentMapper);
}
//模拟数据库中的数据
private static Map<Integer,Employee> employees = null;
static {
employees = new HashMap<Integer,Employee>();//创建一个员工表
employees.put(1,new Employee(1,"zhangsan","sing",2,new Date(2001,10,8),100000.0,10.0,10,departmentMapper.selectByPrimaryKey(10)));
employees.put(2,new Employee(2,"lisi","dance",3,new Date(2002,10,8),10000.0,5.0,30,departmentMapper.selectByPrimaryKey(30)));
employees.put(3,new Employee(3,"wangwu","sing",null,new Date(2003,10,8),200000.0,10.0,20,departmentMapper.selectByPrimaryKey(20)));
}
//主键自增
private static Integer initId = 3;
@Override
public int deleteByPrimaryKey(Integer empno) {
employees.remove(empno);
return 0;
}
@Override
public int insert(Employee record) {
initId++;
Integer deptno = record.getDeptno();
Department department = departmentMapper.selectByPrimaryKey(deptno);
record.setDepartment(department);
record.setEmpno(initId);
employees.put(initId,record);
return 0;
}
@Override
public Employee selectByPrimaryKey(Integer empno) {
Employee employee = employees.get(empno);
System.out.println(employee);
return employee;
}
@Override
public List<Employee> selectAllEmployees() {
List<Employee> Allemployees = (List<Employee>) EmployeeMapperImpl.employees.values();
return Allemployees;
}
@Override
public int updateByPrimaryKey(Employee record) {
Integer empno = record.getEmpno();
employees.put(empno,record);
return 0;
}
}
这是我的代码,运行时报空指针异常。bean注入不成功
那你就@Resource按名称注入
mybatis的*mapper接口并不需要类去实现吧,*mapper接口的实现类其实是对应的*mapper.xml文件。
我没有连接数据库,直接是模拟的数据库,所以没有*mapper.xml文件
换@Resource也不行
你这个dao层互相调用,一般好像不这样使用,弄个sevice层调用dao层试试。
我写了service层,也没用
我的意思是把Mapper实现类的*mapper属性干掉,把dao层互相调用的部分全部抽到service层,mapper实现类里边不要去声明或注入别的mapper接口,@Repository换成@Component吧,反正只是模拟dao层