- 首先导入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
- 配置数据库连接信息
也可以使用yaml配置,这里使用默认的数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
# mybatis配置
#别名
mybatis.type-aliases-package=com.wcy.pojo
# mapper配置文件
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
- 在pojo包下创建实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
private Integer id;
private String name;
}
@Data
@NoArgsConstructor
public class Employee {
private Integer id;
private String name;
private String email;
private Integer sex;
private Department department;
private Date birth;
public Employee(Integer id, String name, String email, Integer sex, Department department) {
this.id = id;
this.name = name;
this.email = email;
this.sex = sex;
this.department = department;
this.birth = new Date();
}
}
- 创建表
create table employee
(
id int auto_increment primary key,
name char(255) not null,
email char(255) null,
sex int default 0 not null,
department int not null,
birth date null,
foreign key (department) references department (id)
);
create table department
(
id int auto_increment
primary key,
name char(255) null
);
- 编写Mapper接口
一定要添加Mapper注解和Component注解
@Mapper
@Repository
public interface DepartmentMapper {
int addDepartment(Department department);
int deleteDepartment(Integer id);
int updateDepartment(Department department);
Department queryDepartment(Integer id);
List<Department> queryAllDepartment();
}
@Mapper
@Repository
public interface EmployeeMapper {
int addEmployee(Employee employee);
int deleteEmployee(Integer id);
int updateEmployee(Employee employee);
Employee queryEmployee(Integer id);
List<Employee> queryAllEmployee();
}
- 编写Mapper.xml文件
在resource目录下创建mybatis/mapper目录,在其中编写,并且在配置文件中指定mapper.xml文件的位置
# mapper配置文件
mybatis.mapper-locations=classpath:mybatis/mapper/*.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="com.wcy.mapper.DepartmentMapper">
<insert id="addDepartment" parameterType="Department">
insert into department (`id`, `name`)
values (#{id}, #{name});
</insert>
<delete id="deleteDepartment">
delete
from department
where id=#{id};
</delete>
<update id="updateDepartment" parameterType="Department">
update department
set name=#{name}
where id=#{id};
</update>
<select id="queryDepartment" resultType="Department">
select *
from department
where id=#{id};
</select>
<select id="queryAllDepartment" resultType="Department">
select *
from department;
</select>
</mapper>
<?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="com.wcy.mapper.EmployeeMapper">
<resultMap id="EmployeeMap" type="Employee">
<id property="id" column="eid"/>
<result property="name" column="ename"/>
<result property="email" column="email"/>
<result property="sex" column="sex"/>
<result property="birth" column="birth"/>
<!--多对一-->
<association property="department" javaType="Department">
<id property="id" column="did"/>
<result property="name" column="dname"/>
</association>
</resultMap>
<select id="queryAllEmployee" resultMap="EmployeeMap">
select e.id eid, e.name ename, email, sex, d.name dname, birth, d.id did
from employee e
join department d
on e.department = d.id
</select>
<select id="queryEmployee" resultMap="EmployeeMap">
select e.id eid, e.name ename, email, sex, d.name dname, birth, d.id did
from employee e
join department d
on e.department = d.id
where e.id = #{id}
</select>
<insert id="addEmployee" parameterType="Employee">
insert into employee (id, name, email, sex, department, birth)
values (#{id}, #{name}, #{email}, #{sex}, #{department.id}, #{birth});
</insert>
<delete id="deleteEmployee">
delete
from employee
where id = #{id};
</delete>
<update id="updateEmployee" parameterType="Employee">
update employee
set name=#{name},
email=#{email},
sex=#{sex},
department=#{department.id},
birth=#{birth}
where id = #{id};
</update>
</mapper>
- 测试,随便测一下
@Autowired
DepartmentMapper departmentMapper;
@Autowired
EmployeeMapper employeeMapper;
@Test
void test1() {
for (Department department : departmentMapper.queryAllDepartment()) {
System.out.println(department);
}
}
@Test
void test2() {
employeeMapper.addEmployee(new Employee(2, "eeee", "dafe@qq.com", 0, departmentMapper.queryDepartment(102)));
}
没啥问题,接下来就可以编写controller来使用了