【Spring Boot整合MyBatis教程】

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

以下是Spring Boot整合MyBatis的详细教程,包含完整的代码示例。

1、创建一个Spring Boot项目

首先,我们需要创建一个Spring Boot项目。打开IDE(推荐使用IntelliJ IDEA),选择New Project,然后选择Spring Initializr,根据需要填写必要的信息(例如Group、Artifact、Dependencies等),最后确认创建项目。

2、添加必要的依赖关系

在pom.xml文件中添加以下依赖关系,以集成MyBatis框架:

<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.1.0version>
    dependency>
 
    <dependency>
        <groupId>com.h2databasegroupId>
        <artifactId>h2artifactId>
        <version>1.4.195version>
        <scope>runtimescope>  
    dependency>
     
dependencies>

其中,spring-boot-starter-web 表示 Spring Boot 的 Web 开发起始依赖包,mybatis-spring-boot-starter 是 MyBatis 官方提供的集成 Spring Boot 的起步依赖包,h2 是一个内存数据库,可以用作我们测试环境的数据库。

3、创建实体类和Mapper接口

在 src/main/java 下创建一个名为 com.example.demo.domain 的包,这个包存放的是实体类。下面是一个简单的User实体类:

public class User {
    private Long id;
    private String username;
    private String password;
    // 省略setter和getter方法
}

接下来,我们需要定义一个Mapper接口来操作 User 实体类。在 src/main/java 下创建一个名为 com.example.demo.mapper 的包,然后创建一个名为 UserMapper 的接口:

public interface UserMapper {
    User findByUsername(String username);
    void save(User user);
}

4、创建Mapper映射文件

在 src/main/resources/mapper 下创建一个名为 UserMapper.xml 的文件,用于定义SQL语句。下面是一个简单的UserMapper.xml文件:


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.example.demo.mapper.UserMapper">
 
    <resultMap id="BaseResultMap" type="com.example.demo.domain.User">
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="username" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
    resultMap>
 
    <select id="findByUsername" resultMap="BaseResultMap">
        SELECT * FROM users WHERE username = #{username}
    select>
     
    <insert id="save" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO users (username, password) 
        VALUES (#{username}, #{password})
    insert>
 
mapper>

5、编写服务层的代码

创建服务层来实现业务逻辑。在src/main/java 下创建一个名为 com.example.demo.service 的包,然后创建一个名为 UserService 的接口:

public interface UserService {
    User findByUsername(String username);
    void save(User user);
}

接下来,创建 UserServiceImpl 类实现 UserService 接口:

@Service
public class UserServiceImpl implements UserService {
 
    @Autowired
    private UserMapper userMapper;
 
    @Override
    public User findByUsername(String username) {
        return userMapper.findByUsername(username);
    }
 
    @Override
    public void save(User user) {
        userMapper.save(user);
    }
 
}

6、创建控制器层的代码

在src/main/java 下创建一个名为 com.example.demo.controller 的包,然后创建一个名为 UserController 的类:

@RestController
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @RequestMapping(value = "/findUser")
    public User findUser(HttpServletRequest request) {
        String username = request.getParameter("username");
        return userService.findByUsername(username);
    }
 
    @RequestMapping(value = "/saveUser")
    public String saveUser(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        userService.save(user);
        return "SUCCESS";
    }
 
}

7、修改配置文件

在 src/main/resources 下创建一个名为 application.properties 的文件。添加以下属性:

spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
 
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*.xml

这个文件用于配置一些参数,并将 MyBatis 的映射配置文件放在mapper文件夹中。

至此,我们已经完成了 Spring Boot 整合 MyBatis 框架的所有步骤。

最后,附上完整代码:

完整代码

User.java:

public class User {
    private Long id;
    private String username;
    private String password;
    // 省略setter和getter方法
}

UserMapper.java:

public interface UserMapper {
    User findByUsername(String username);
    void save(User user);
}

UserMapper.xml:


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.example.demo.mapper.UserMapper">
 
    <resultMap id="BaseResultMap" type="com.example.demo.domain.User">
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="username" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
    resultMap>
 
    <select id="findByUsername" resultMap="BaseResultMap">
        SELECT * FROM users WHERE username = #{username}
    select>
     
    <insert id="save" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO users (username, password) 
        VALUES (#{username}, #{password})
    insert>
 
mapper>

UserServiceImpl.java:

@Service
public class UserServiceImpl implements UserService {
 
    @Autowired
    private UserMapper userMapper;
 
    @Override
    public User findByUsername(String username) {
        return userMapper.findByUsername(username);
    }
 
    @Override
    public void save(User user) {
        userMapper.save(user);
    }
 
}

UserController.java:

@RestController
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @RequestMapping(value = "/findUser")
    public User findUser(HttpServletRequest request) {
        String username = request.getParameter("username");
        return userService.findByUsername(username);
    }
 
    @RequestMapping(value = "/saveUser")
    public String saveUser(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        userService.save(user);
        return "SUCCESS";
    }
 
}

application.properties:

spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=root
spring.datasource.password=123456
 
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*.xml

希望这个教程可以帮助到你!

你可能感兴趣的:(Java,MySQL,Spring,Boot,mybatis,spring,boot,java)