springboot与mybatis整合的示例分析
Spring Boot是一个非常流行的Java开发框架,而MyBatis则是一个非常流行的Java持久层框架,两者的结合可以为Java开发带来很多便利,本文将通过一个示例来分析Spring Boot与MyBatis的整合方式。
1. 配置pom.xml
首先我们需要在pom.xml文件中添加一些约束,这些约束指定我们要使用的Spring Boot和MyBatis版本等,具体内容如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.boot.version>2.2.6.RELEASE</spring.boot.version>
<mybatis.spring.boot.version>2.0.0</mybatis.spring.boot.version>
<mysql.connector.java.version>8.0.19</mysql.connector.java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.java.version}</version>
</dependency>
</dependencies>
2. 配置application.properties
接着,我们需要在application.properties文件中指定一些关键配置,包括数据库地址、用户名和密码等,具体如下:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/spring-boot-mybatis-demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=root # MyBatis mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity
3. 创建实体类
在该示例中,我们可以通过创建一个User实体类来演示MyBatis的CRUD操作,具体如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
需要注意的是,该实体类使用了Lombok注解@Data,因此无需手动编写getter和setter方法。
4. 创建Mapper接口
Mapper接口是一个可以定义SQL语句的Java接口,通过在该接口中定义一些方法,我们可以在MyBatis中进行CRUD操作。此处我们可以创建一个UserMapper接口,如下:
@Mapper
public interface UserMapper {
List<User> findAll();
User findById(Integer id);
int insert(User user);
int update(User user);
int delete(Integer id);
}
需要注意的是,在这里我们使用了@Mapper注解,该注解可以用于Mapper接口中,它可以告诉Spring框架该接口会在运行时生成相应的实现类。
5. 编写Mapper的SQL语句
我们在mapper目录下创建一个UserMapper.xml文件,其中定义了与Mapper接口对应的相应SQL语句,具体如下:
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findAll" resultType="com.example.demo.entity.User">
SELECT *
FROM user
</select>
<select id="findById" parameterType="Integer" resultType="com.example.demo.entity.User">
SELECT *
FROM user
WHERE id = #{id}
</select>
<insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name, age)
VALUES(#{name}, #{age})
</insert>
<update id="update" parameterType="com.example.demo.entity.User">
UPDATE user
SET name=#{name}, age=#{age}
WHERE id = #{id}
</update>
<delete id="delete" parameterType="Integer">
DELETE FROM user
WHERE id = #{id}
</delete>
</mapper>
需要注意的是,在SQL语句中,使用#{}来表示查询参数。
6. 编写Controller
最后,在UserController中定义一些接口来进行CRUD操作,如下:
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
//获取所有
@RequestMapping("/getAll")
public List<User> getAll() {
return userMapper.findAll();
}
//根据id获取
@RequestMapping("/getById/{id}")
public User getById(@PathVariable int id) {
return userMapper.findById(id);
}
//添加
@RequestMapping("/add")
public int addUser(User user) {
return userMapper.insert(user);
}
//更新
@RequestMapping("/update")
public int updateUser(User user) {
return userMapper.update(user);
}
//删除
@RequestMapping("/delete/{id}")
public int deleteById(@PathVariable int id) {
return userMapper.delete(id);
}
}
在该Controller中,我们注入了UserMapper接口实例,然后可以通过RequestMapping来定义一些接口供外部调用。
至此,我们已经完成了Spring Boot和MyBatis的整合,通过以上步骤,我们可以快速的进行Java提供的CRUD操作。
总结
Spring Boot和MyBatis的结合是一个非常常见的开发场景,它可以为Java开发者提供更加方便的编码体验。在本文中,我们通过一个示例来介绍了整个过程,希望对读者有所帮助。
