Spring Boot是一个用于快速构建独立、生产级别的Spring应用程序的框架。而MyBatis是一个开源的持久层框架,可以与Spring Boot无缝集成,提供强大的数据库访问能力。
本文将介绍如何在Spring Boot项目中集成MyBatis,并展示一些常用的操作示例。
首先,我们需要创建一个Spring Boot项目。你可以使用Spring Initializr(https://start.spring.io/)来快速生成一个基础的Spring Boot项目。
在项目的pom.xml
文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.2.0version>
dependency>
<dependency>
<groupId>com.h2databasegroupId>
<artifactId>h2artifactId>
<scope>runtimescope>
dependency>
dependencies>
在application.properties
(或application.yml
)文件中配置数据库连接信息,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
在application.properties
(或application.yml
)文件中配置Mapper文件路径,例如:
#不配置此项 会提示绑定失败!
mybatis.mapper-locations=classpath:mapping/*.xml
创建一个实体类,用于映射数据库表的字段。例如,创建一个名为User
的实体类:
public class User {
private Long id;
private String username;
private String password;
// 其他字段...
// getter和setter方法...
}
创建一个Mapper接口,用于定义数据库操作的方法。例如,创建一个名为UserMapper
的接口:
public interface UserMapper {
void insert(User user);
void update(User user);
void delete(Long id);
User findById(Long id);
List<User> findAll();
}
在resources目录下创建一个与Mapper接口同名的XML文件,用于编写SQL语句。例如,创建一个名为UserMapper.xml
的文件:
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insert" parameterType="com.example.entity.User">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
insert>
<update id="update" parameterType="com.example.entity.User">
UPDATE user SET username=#{username}, password=#{password} WHERE id=#{id}
update>
<delete id="delete" parameterType="java.lang.Long">
DELETE FROM user WHERE id=#{id}
delete>
<select id="findById" parameterType="java.lang.Long" resultType="com.example.entity.User">
SELECT * FROM user WHERE id=#{id}
select>
<select id="findAll" resultType="com.example.entity.User">
SELECT * FROM user
select>
mapper>
创建一个Service接口和实现类,用于调用Mapper接口中的方法。例如,创建一个名为UserService
的接口和实现类:
public interface UserService {
void addUser(User user);
void updateUser(User user);
void deleteUser(Long id);
User getUserById(Long id);
List<User> getAllUsers();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void addUser(User user) {
userMapper.insert(user);
}
@Override
public void updateUser(User user) {
userMapper.update(user);
}
@Override
public void deleteUser(Long id) {
userMapper.delete(id);
}
@Override
public User getUserById(Long id) {
return userMapper.findById(id);
}
@Override
public List<User> getAllUsers() {
return userMapper.findAll();
}
}
创建一个Controller类,用于处理HTTP请求。例如,创建一个名为UserController
的类:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
@PutMapping("/{id}")
public void updateUser(@PathVariable Long id, @RequestBody User user) {
user.setId(id);
userService.updateUser(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
}
SpringBoot入口配置@MapperScan
package com.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
// 配置MapperScan 避免找不到Bean的异常
@MapperScan("com.demo.dao")
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication .class, args);
}
}
现在,你可以运行Spring Boot项目,并通过HTTP请求访问API接口了。
本文介绍了如何在Spring Boot项目中集成MyBatis,并展示了一些常用的操作示例。希望对你有帮助。如果你有任何问题或建议,欢迎留言讨论!