本文最后更新于22 天前,其中的信息可能已经过时,如有错误请发送邮件到qiqin-chang@qq.com
官方网站:https://mybatis.org/mybatis-3/zh_CN/index.html
依赖:
<!-- MyBatis 持久层框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
配置:
## MyBatis配置与xml映射
mybatis:
## 映射xml
mapper-locations: classpath:mapper/*.xml
configuration:
## 日志配置
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
## 映射格式转换
map-underscore-to-camel-case: true
自动映射:
Java:驼峰命名:departmentId
数据库:下划线:department_id
mapper包扫描:
启动类注解:
@MapperScan("com.chang.mapper")
XML基础模版:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="对应mapper接口引用">
</mapper>
XML格式:
<select id="selectAll" resultType="com.chang.entity.Employee"> <!--id对应方法名 resultType:结果类型 对应实体类引用-->
select * from employee
<where>
<if test="name!=null">name like concat('%',#{name},'%')</if>
</where>
</select>
<insert id="insert" parameterType="com.chang.entity.Employee"> <!--parameterType:参数类型-->
insert into `employee` (name,sex,no,age,description,department_id) <!--下划线命名法-->
values (#{name},#{sex},#{no},#{age},#{description},#{departmentId}) <!--驼峰命名-->
</insert>
注解查询:
@Select("select * from employee where id = #{id}")
Employee selectById(Integer id);
代码模版:
Mapper:
package com.chang.mapper;
public interface EmployeeMapper {
}
Service:
package com.chang.service;
import org.springframework.stereotype.Service;
@Service
public class EmployeeService {
}
分页插件-分页查询:
依赖:
<!--PageHelper 分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
代码:
controller:
/**
* 分页查询数据
* pageNum: 当前页码
* pageSize: 每页的个数
*/
@GetMapping("/selectPage")
public Result selectPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize){
PageInfo<Employee> pageInfo = employeeService.selectPage(pageNum, pageSize);
return Result.success(pageInfo);
}
service:
@Override
public PageInfo<Employee> selectPage(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Employee> list = employeeMapper.selectAll();
return PageInfo.of(list) ;
}
CRUD:
Controller层:
package com.chang.controller;
import com.chang.common.Result;
import com.chang.entity.Employee;
import com.chang.service.EmployeeService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
/**
* 查询单个数据
*/
@GetMapping("/selectById/{id}")
public Result selectById(@PathVariable Integer id){
Employee employee = employeeService.selectById(id);
return Result.success(employee);
}
/**
* 查询所有的数据
*/
@GetMapping("/selectAll")
public Result selectAll(){
List<Employee> list = employeeService.selectAll();
return Result.success(list);
}
/**
* 分页查询数据
* pageNum: 当前页码
* pageSize: 每页的个数
*/
@GetMapping("/selectPage")
public Result selectPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize){
PageInfo<Employee> pageInfo = employeeService.selectPage(pageNum, pageSize);
return Result.success(pageInfo);
}
/**
* 新增数据
*/
@PostMapping("/add")
public Result add(@RequestBody Employee employee){
employeeService.add(employee);
return Result.success();
}
/**
* 跟新数据
*/
@PutMapping("/update")
public Result update(@RequestBody Employee employee){
employeeService.update(employee);
return Result.success();
}
/**
* 删除单个数据
*/
@DeleteMapping("/deleteById/{id}")
public Result update(@PathVariable Integer id){
employeeService.deleteById(id);
return Result.success();
}
}
ServiceImpl接口:
package com.chang.service.impl;
import com.chang.entity.Employee;
import com.github.pagehelper.PageInfo;
import java.util.List;
public interface EmployeeServiceImpl {
Employee selectById(Integer id);
List<Employee> selectAll();
PageInfo<Employee> selectPage(Integer pageNum, Integer pageSize);
void add(Employee employee);
void update(Employee employee);
void deleteById(Integer id);
}
Service层:
package com.chang.service;
import com.chang.entity.Employee;
import com.chang.mapper.EmployeeMapper;
import com.chang.service.impl.EmployeeServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmployeeService implements EmployeeServiceImpl {
@Autowired
private EmployeeMapper employeeMapper;
@Override
public Employee selectById(Integer id) {
return employeeMapper.selectById(id);
}
@Override
public List<Employee> selectAll() {
//额外业务操作
return employeeMapper.selectAll();
}
@Override
public PageInfo<Employee> selectPage(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Employee> list = employeeMapper.selectAll();
return PageInfo.of(list) ;
}
@Override
public void add(Employee employee) {
employeeMapper.insert(employee);
}
@Override
public void update(Employee employee) {
employeeMapper.updateById(employee);
}
@Override
public void deleteById(Integer id) {
employeeMapper.deleteById(id);
}
}
Mapper层:
package com.chang.mapper;
import com.chang.entity.Employee;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface EmployeeMapper {
List<Employee> selectAll();
@Select("select * from `employee` where id = #{id}")
Employee selectById(Integer id);
void insert(Employee employee);
void updateById(Employee employee);
@Delete("delete from `employee` where id = #{id}")
void deleteById(Integer id);
}
XML文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chang.mapper.EmployeeMapper">
<select id="selectAll" resultType="com.chang.entity.Employee">
select * from employee
</select>
<insert id="insert" parameterType="com.chang.entity.Employee">
insert into `employee` (name,sex,no,age,description,department_id)
values (#{name},#{sex},#{no},#{age},#{description},#{departmentId})
</insert>
<update id="updateById" parameterType="com.chang.entity.Employee">
update `employee` set name = #{name},sex = #{sex},no=#{no},age=#{age},
description=#{description},department_id=#{departmentId}
where id=#{id}
</update>
</mapper>