四、SpringBoot整合MyBatis实现增删改查
MyBatis是一款优秀的持久层框架,原名叫做iBatis,MyBatis支持定制化sql、存储过程以及高级映射。MyBatis几乎避免了所有的JDBC代码手动设置参数以及获取结果集。在传统SSM框架整合中,使用MyBatis需要大量的XML配置,而在SpringBoot中,MyBatis官方提供了一套自动化配置方案,可以做到MyBaits开箱即用。
1、创建项目导入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
2、创建数据库、表、实体类等
application.properties配置文件
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=12345678
3、创建数据库访问层
创建BookMapper:
@Mapper
public interface PersonMapper {
// 增加数据
int addPerson(Person person);
// 删除数据
int deletePerson(Integer id);
// 修改数据
int updatePerson(Person person);
// 根据id查找数据
Person GetPersonById(Integer id);
// 查找全部数据
List<Person> getAllPerson();
}
代码解释:
-
指定mapper类,在BookMapper上添加@Mapper注解,表明该接口是一个MyBatis中的Mapper
-
指定mapper类,在配置类上添加@MapperScan("包名")注解
4、创建PersonMapper.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.kkb.mapper.PersonMapper">
<!--增加数据-->
<insert id="addPerson" parameterType="com.kkb.pojo.Person">
insert into Person(name,sex,age) value(#{name},#{sex},#{age})
</insert>
<!--删除数据-->
<delete id="deletePerson" parameterType="Integer">
delete from Person where id=#{id}
</delete>
<!--修改数据-->
<update id="updatePerson" parameterType="com.kkb.pojo.Person">
update Person set name=#{name} where id=#{id}
</update>
<!--根据id查找数据-->
<select id="getPersonById" parameterType="Integer">
select * from Person where id=#{id}
</select>
<!--查找全部数据-->
<select id="getAllPerson">
select * from Person
</select>
</mapper>
代码解释:
-
针对BookMapper接口中的每一个方法都在BookMapper.xml中列出了实现
-
#{}用来代替接口中的参数,实体类中的属性可以直接通过#{实体类属性名}获取
5、创建Service和Controller
@Service
public class PersonService {
@Autowired
PersonMapper personMapper;
public int addPerson(Person person){
return personMapper.addPerson(person);
}
public int deletePerson(Integer id){
return personMapper.deletePerson(id);
}
public int updatePerson(Person person){
return personMapper.updatePerson(person);
}
public Person getPersonById(Integer id){
return personMapper.GetPersonById(id);
}
public List<Person> getAllPerson(){
return personMapper.getAllPerson();
}
}
@RestController
public class PersonController {
@Autowired
PersonService personService;
@GetMapping("/addperson")
public String personMethod(){
Person p1 = new Person();
p1.setName("阿花");
p1.setSex("女");
p1.setAge(17);
int num = personService.addPerson(p1);
if(num > 0){
return "添加成功!";
}
return "";
}
}
6、配置pom.xml文件
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
7、实现增删改查功能
实现查看功能:
可以看到数据已经出来了