Springboot+mybatis+MySQL實現簡單的多表查詢
阿新 • • 發佈:2018-11-19
Springboot+mybatis+MySQL實現簡單的多表查詢
直接進入正題
1.首先我們新建一個數據庫,再建兩個表
tbl_employee表建表SQL語句
CREATE TABLE `tbl_employee` ( `id` int(200) NOT NULL AUTO_INCREMENT, `last_name` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `gender` varchar(255) DEFAULT NULL, `d_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_emp_dept` (`d_id`), CONSTRAINT `fk_emp_dept` FOREIGN KEY (`d_id`) REFERENCES `tbl_dept` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
tbl_dept表建表SQL語句
CREATE TABLE `tbl_dept` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dept_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
表建好之後,我們填入一些資料。如下:
圖中畫紅圈的為關聯部分,將兩個表進行關聯。
2.在平時我們需要分別查詢每一個表的資訊。
這裡我們的需求是,我要查詢這個人的名字順便查到這個人屬於哪個部門,這就需要多表聯查了。
3.我們還用SpringBoot+mybatis建立一個專案。
4.程式碼如下:
Controller層
@RestController public class EmployeeController { @Autowired private EmployeeService employeeService; @RequestMapping(value = "/selectEmployee",method = RequestMethod.POST,headers = "Accept=application/json") public HttpResponseEntity selectEmployee(@RequestBody Employee employee){ HttpResponseEntity httpResponseEntity = new HttpResponseEntity(); try { Employee selectEmployee = employeeService.selectEmployee(employee); httpResponseEntity.setCode(Constans.SUCCESS_CODE); httpResponseEntity.setMessage(Constans.SELECT_EXIST_SUCCESS); httpResponseEntity.setData(selectEmployee); }catch (Exception e){ httpResponseEntity.setCode(Constans.ADD_EXIST_CODE); httpResponseEntity.setMessage(Constans.SELECT_EXIST_MESSAGE); } return httpResponseEntity; }
Service層
@Service
public class EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
@Transactional
public Employee selectEmployee(Employee employee) {
Employee selectEmployee = employeeMapper.selectEmployee(employee.getId());
return selectEmployee;
}
Mapper
Employee selectEmployee(Integer id);
5.建立兩個實體類,程式碼如下:
Department
package com.springboot.dao.entity;
public class Department {
private Integer id;
private String departmentName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
@Override
public String toString() {
return "Department{" +
"id=" + id +
", departmentName='" + departmentName + '\'' +
'}';
}
}
Employee
package com.springboot.dao.entity;
public class Employee {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column tbl_employee.id
*
* @mbg.generated
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column tbl_employee.last_name
*
* @mbg.generated
*/
private String lastName;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column tbl_employee.email
*
* @mbg.generated
*/
private String email;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column tbl_employee.gender
*
* @mbg.generated
*/
private String gender;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column tbl_employee.d_id
*
* @mbg.generated
*/
private Integer dId;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column tbl_employee.id
*
* @return the value of tbl_employee.id
*
* @mbg.generated
*/
private Department dept;
public Department getDept() {
return dept;
}
public void setDept(Department dept) {
this.dept = dept;
}
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column tbl_employee.id
*
* @param id the value for tbl_employee.id
*
* @mbg.generated
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column tbl_employee.last_name
*
* @return the value of tbl_employee.last_name
*
* @mbg.generated
*/
public String getLastName() {
return lastName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column tbl_employee.last_name
*
* @param lastName the value for tbl_employee.last_name
*
* @mbg.generated
*/
public void setLastName(String lastName) {
this.lastName = lastName == null ? null : lastName.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column tbl_employee.email
*
* @return the value of tbl_employee.email
*
* @mbg.generated
*/
public String getEmail() {
return email;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column tbl_employee.email
*
* @param email the value for tbl_employee.email
*
* @mbg.generated
*/
public void setEmail(String email) {
this.email = email == null ? null : email.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column tbl_employee.gender
*
* @return the value of tbl_employee.gender
*
* @mbg.generated
*/
public String getGender() {
return gender;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column tbl_employee.gender
*
* @param gender the value for tbl_employee.gender
*
* @mbg.generated
*/
public void setGender(String gender) {
this.gender = gender == null ? null : gender.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column tbl_employee.d_id
*
* @return the value of tbl_employee.d_id
*
* @mbg.generated
*/
public Integer getdId() {
return dId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column tbl_employee.d_id
*
* @param dId the value for tbl_employee.d_id
*
* @mbg.generated
*/
public void setdId(Integer dId) {
this.dId = dId;
}
}
6.重新再xml配置檔案中定義對映
<resultMap id="MyDifEmp" type="com.springboot.dao.entity.Employee">
<id column="id" property="id"/>
<result column="last_name" property="lastName"/>
<result column="gender" property="gender"/>
<result column="d_id" property="dId" />
<result column="did" property="dept.id"/>
<result column="dept_name" property="dept.departmentName"/>
</resultMap>
<select id="selectEmployee" resultMap="MyDifEmp">
SELECT e.id id,e.last_name last_name,e.email email,e.gender gender,e.d_id d_id,
d.id did,d.dept_name dept_name FROM tbl_employee e,tbl_dept d
WHERE e.d_id=d.id AND e.id=#{id}
</select>
程式碼就寫完了,我們啟動一下。
這裡用postman測試一下:
大功告成!!!!!!!!!!!!!