添加依赖: 在
pom.xml
文件中添加以下依赖:<dependency> <groupId>org.springframework.boot</groupId> <!-- Spring Boot Web Starter包含了构建Web应用所需的依赖 --> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <!-- MyBatis Spring Boot Starter整合了MyBatis和Spring Boot --> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <!-- MySQL数据库连接器 --> <artifactId>mysql-connector-java</artifactId> </dependency>
配置数据源: 在
application.properties
或application.yml
中配置数据库连接信息,例如:spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase <!-- 数据库连接URL --> spring.datasource.username=root <!-- 数据库用户名 --> spring.datasource.password=password <!-- 数据库密码 --> spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver <!-- 数据库驱动类名 -->
创建实体类: 创建一个简单的实体类
User
,用于表示数据库中的用户信息。public class User { private Long id; // 用户ID private String name; // 用户名 private Integer age; // 用户年龄 // 省略getter和setter方法 }
创建Mapper接口: 创建一个Mapper接口
UserMapper
,定义数据库操作的方法。public interface UserMapper { void insert(User user); // 插入用户信息 List<User> findAll(); // 查询所有用户信息 }
创建Mapper XML文件: 在
resources
目录下创建UserMapper.xml
文件,定义SQL语句和映射关系。<?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.example.mapper.UserMapper"> <!-- 指定Mapper接口的命名空间 --> <insert id="insert" parameterType="com.example.model.User"> <!-- 插入用户信息的SQL语句 --> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <select id="findAll" resultType="com.example.model.User"> <!-- 查询所有用户信息的SQL语句 --> SELECT * FROM user </select> </mapper>
配置MyBatis: 创建一个配置类
MyBatisConfig
,配置MyBatis相关的参数。@Configuration public class MyBatisConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); // 创建SqlSessionFactoryBean sessionFactory.setDataSource(dataSource); // 设置数据源 return sessionFactory.getObject(); // 返回SqlSessionFactory } }
使用MyBatis: 在需要使用MyBatis的地方注入
UserMapper
接口,并使用其中定义的方法进行数据库操作。@RestController public class UserController { @Autowired private UserMapper userMapper; // 注入UserMapper接口 @PostMapping("/users") public String createUser(@RequestBody User user) { // 创建用户的API userMapper.insert(user); // 调用insert方法插入用户信息 return "User created successfully"; } @GetMapping("/users") public List<User> getAllUsers() { // 获取所有用户的API return userMapper.findAll(); // 调用findAll方法查询所有用户信息 } }
这个例子展示了如何在Spring Boot中整合MyBatis进行数据库操作。通过配置数据源、创建Mapper接口和XML文件,以及使用注解或XML方式进行SQL操作,可以方便地使用MyBatis进行数据库访问。
创建Mapper接口、实体类、Mapper XML文件和配置MyBatis是为了实现MyBatis与数据库的交互和映射关系。
Mapper接口: Mapper接口是定义数据库操作方法的接口,通过在接口中定义方法,可以方便地进行数据库的增删改查操作。Mapper接口中的方法名和参数与对应的SQL语句相关联,MyBatis会根据方法名和参数自动生成对应的SQL语句,并执行数据库操作。
实体类: 实体类是用于表示数据库中的数据的Java对象。通过创建实体类,可以将数据库中的表结构映射到Java对象上,方便在代码中操作和处理数据。
Mapper XML文件: Mapper XML文件是用于定义SQL语句和数据库映射关系的文件。在Mapper XML文件中,可以编写各种SQL语句,包括插入、删除、更新、查询等操作。同时,还可以在XML文件中定义结果集映射关系,将查询结果映射到对应的实体类中。
配置MyBatis: 配置MyBatis是为了告诉Spring Boot如何使用MyBatis框架。通过配置MyBatis,可以指定数据源、配置SQLSessionFactory等参数,以及指定Mapper接口所在的包路径。这样,Spring Boot在启动时会自动扫描Mapper接口,并将其注册为Bean,方便在代码中进行注入和使用。
通过创建Mapper接口、实体类、Mapper XML文件和配置MyBatis,可以实现数据库操作和数据映射的解耦,提高代码的可维护性和可扩展性。同时,MyBatis提供了灵活的SQL编写和结果集映射方式,可以满足各种复杂的数据库操作需求。
@Configuration
注解表示这是一个配置类,Spring Boot会自动扫描并加载该类。@Bean
注解表示将SqlSessionFactory
对象作为一个Bean交给Spring容器管理。SqlSessionFactoryBean
是MyBatis提供的一个工厂类,用于创建SqlSessionFactory
对象。sessionFactory.setDataSource(dataSource)
方法用于设置SqlSessionFactory
的数据源,即连接数据库的信息。sessionFactory.getObject()
方法用于获取SqlSessionFactory
对象。
return sessionFactory.getObject();
这行代码返回一个 SqlSessionFactory
对象,它是 MyBatis 的核心类之一,用于创建 SqlSession
对象,从而进行数据库操作。
SqlSessionFactory
是一个线程安全的对象,它的主要作用是创建和管理 SqlSession
对象。SqlSession
是 MyBatis 中用于执行 SQL 语句的接口,它提供了各种方法来执行数据库操作,如插入、更新、删除、查询等。
在这段代码中,通过调用 sessionFactory.getObject()
方法,会返回一个已经配置好的 SqlSessionFactory
对象,该对象可以被注入到其他需要进行数据库操作的地方,从而实现对数据库的访问。
getObject()
是 SqlSessionFactoryBean
类中的一个方法,用于获取 SqlSessionFactory
对象。
在上面的代码中,sessionFactory
是一个 SqlSessionFactoryBean
对象,通过调用 sessionFactory.getObject()
方法,可以获取到一个已经配置好的 SqlSessionFactory
对象。
SqlSessionFactory
是 MyBatis 的核心类之一,用于创建和管理 SqlSession
对象,从而进行数据库操作。通过配置数据源、映射文件等信息,SqlSessionFactory
可以根据这些配置创建出 SqlSession
对象,从而执行 SQL 语句并与数据库进行交互。
getObject()
方法会根据配置的数据源等信息,创建并返回一个 SqlSessionFactory
对象,以供其他地方使用。List<User>
是一个泛型类型,表示一个包含多个 User
对象的列表。parameterType="com.example.model.User"
表示方法的参数类型是 com.example.model.User
,也就是接受一个 User
对象作为参数。resultType="com.example.model.User"
表示方法的返回类型是 com.example.model.User
,也就是返回一个 User
对象。
在数据库操作中,parameterType
用于指定传入 SQL 语句的参数类型,而 resultType
用于指定 SQL 语句的返回结果类型。
对于 parameterType="com.example.model.User"
,可以将一个 User
对象作为参数传入 SQL 语句中,以便进行相关的数据库操作。
对于 resultType="com.example.model.User"
,执行 SQL 语句后,会返回一个 User
对象作为结果。
!!!!!使用:
当你想要使用这个控制器进行插入或查询操作时,你可以通过发送 HTTP 请求来调用相应的 API。以下是一些使用示例:
插入用户信息
你可以使用 HTTP POST 请求来插入用户信息。使用一个类似于 cURL 或者 Postman 的工具,或者在你的应用中发送 HTTP POST 请求。以下是一个使用 cURL 的示例:
curl -X POST -H "Content-Type: application/json" -d '{"name": "Alice", "age": 25}' http://your-app-url/users
这个请求会将一个名为 Alice、年龄为 25 的用户信息插入到数据库中。
查询所有用户信息
你可以使用 HTTP GET 请求来获取所有用户信息。同样地,使用一个类似于 cURL 或者 Postman 的工具,或者在你的应用中发送 HTTP GET 请求。以下是一个使用 cURL 的示例:
curl -X GET http://your-app-url/users
这个请求会返回数据库中所有用户的信息。