Spring Boot整合MyBatis框架(完整的注解版)

1、创建数据库、数据库表并插入数据

 

创建数据库springboot:

CREATE DATABASE springboot;

 

创建数据库表user:

CREATE TABLE `user` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用戶id',

  `user_name` varchar(100) DEFAULT NULL COMMENT '用户名',

  `password` varchar(100) DEFAULT NULL COMMENT '密码',

  `name` varchar(100) DEFAULT NULL COMMENT '姓名',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

 

插入数据:

INSERT INTO user VALUES (1, “chenmotong”, “123456”, “陈墨瞳”);

INSERT INTO user VALUES (2, “lumingfei”, “123456”, “路明非”);

INSERT INTO user VALUES (3, “chuzihang ”, “123456”, “楚子航”);

INSERT INTO user VALUES (4, “xiami”, “123456”, “夏弥”);

INSERT INTO user VALUES (5, “lijiatu”, “123456”, “李嘉图”);

INSERT INTO user VALUES (6, “huiliyi”, “123456”, “绘梨衣”);

INSERT INTO user VALUES (7, “lumingze”, “123456”, “路明泽”);

 

 

 

2、创建Maven项目:打包方式为JAR

 

 

设置项目的JDK编译版本

注意:SpringBoot必须JDK 1.8以上才支持,所以如果跟我一样创建完项目jdk的编译版本不符合的,就要进行配置

一开始是1.5

 

在pom.xml中添加如下配置:

    <!-- 编译环境 -->

    <build>

        <plugins>

            <!-- 设置项目的JDK编译版本 -->

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <configuration>

                    <source>1.8</source>

                    <target>1.8</target>

                    <encoding>UTF-8</encoding>

                </configuration>

            </plugin>

        </plugins>

    </build>

 

保存,然后项目会报错,只需要 Maven >> Update Project 即可

 

查看结果

 

 

至此,项目初步创建完成。

 

3、在pom.xml中导入依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.itcast</groupId>

    <artifactId>Springboot_MyBatis_Annotation</artifactId>

    <version>0.0.1-SNAPSHOT</version>



    <!-- 编译环境 -->

    <build>

        <plugins>

            <!-- 设置项目的JDK编译版本 -->

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <configuration>

                    <source>1.8</source>

                    <target>1.8</target>

                    <encoding>UTF-8</encoding>

                </configuration>

            </plugin>

        </plugins>

    </build>



    <!-- 继承springboot的父工程 -->

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.1.7.RELEASE</version>

    </parent>

    <dependencies>

        <!-- 加入springboot的web组件,版本随父工程的版本而定 -->

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <!-- 配置springboot整合mybatis的启动器依赖 -->

        <dependency>

            <groupId>org.mybatis.spring.boot</groupId>

            <artifactId>mybatis-spring-boot-starter</artifactId>

            <version>2.1.0</version>

        </dependency>

        <!-- 配置springboot中mysql驱动的启动器依赖 -->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

        </dependency>

        <!-- 配置springboot中test组件的依赖 -->

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

        </dependency>

        <!-- 配置单元测试的依赖 -->

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

        </dependency>

    </dependencies>



</project>

 

 

 

4、准备SpringBoot的核心配置文件:application.properties

  • 在src/main/resources目录下创建SpringBoot的核心配置文件:application.properties
  • 数据库的连接参数等配置信息可以配置在其中。

 

#DB Parameter Configuration

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&allowMultiQueries=true

spring.datasource.username=root

spring.datasource.password=dearest

 

 

5、创建SpringBoot的引导类:Application.java

  • 我创建了cn.itcast的包,并在包下创建了SpringBoot的引导类:Application.java
  • 由于引导类启动的时候,会自动扫描自己所在的包及其子包,因此,后面创建的所有类,基本都要在cn.itcast包或者其子包下!!!切记!!!
package cn.itcast;



import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;



/**

 * SpringBoot的引导类

 * @author JimRestaurant

 * 注解说明:

 * @SpringBootApplication 用于指定某个类为SpringBoot的引导类

 * @MapperScan 用于指定引导类启动时要扫描的MyBatis的mapper接口所在的包

 *      如果这里不指定,则每个Mapper接口上都需要使用 @Mapper 注解

 */

@SpringBootApplication

@MapperScan(value = { "cn.itcast.mapper" })

public class Application {

   

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }

}

 

 

 

 

6、创建实体类User

package cn.itcast.entity;

/**

 * 用户的实体类

 * @author JimRestaurant

 */

public class User {

    private Long id;

    private String username;

    private String password;

    private String name;

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password=" + password + ", name=" + name + "]";
    }

}

 

 

 

7、创建Mapper接口

package cn.itcast.mapper;

import java.util.List;



import org.apache.ibatis.annotations.Delete;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Result;

import org.apache.ibatis.annotations.Results;

import org.apache.ibatis.annotations.Select;

import org.apache.ibatis.annotations.Update;



import cn.itcast.entity.User;



/**

 * 用户的持久层接口

 * 持久层接口原本需要用@Mapper注解来注明该类为持久层接口类

 * 但因为我们在引导类中用@MapperScan注解批量扫描了当前包

 * 所以就不需要添加@Mapper注解了

 * @author JimRestaurant


 */

public interface UserMapper {

    /**

     * 查询所有用户

     * @return

     */

    @Select(value = { "SELECT * FROM user" })

    @Results(value = {

            @Result(column = "id", property = "id", javaType = Long.class),

            @Result(column = "user_name", property = "username", javaType = String.class),

            @Result(column = "password", property = "password", javaType = String.class),

            @Result(column = "name", property = "name", javaType = String.class)

    })

    List<User> findAll();

   

   

    /**

     * 按姓名查询用户

     * @param name

     * @return

     */

    @Select(value = { "SELECT * FROM user WHERE name LIKE '%${name}%'" })

    @Results(value = {

            @Result(column = "id", property = "id", javaType = Long.class),

            @Result(column = "user_name", property = "username", javaType = String.class),

            @Result(column = "password", property = "password", javaType = String.class),

            @Result(column = "name", property = "name", javaType = String.class)

    })

    List<User> findUserByName(String name);

   

   

    /**

     * 按用户id查询用户

     * @param id

     * @return

     */

    @Select(value = { "SELECT * FROM user WHERE id = #{id}" })

    User findUserById(Long id);

   

   

    /**

     * 保存用户

     * @param user

     */

    @Insert(value = { "INSERT INTO user (id, user_name, password, name) VALUES (#{id}, #{username}, #{password}, #{name})" })

    void saveUser(User user);

   

   

    /**

     * 更新用户

     * @param user

     */

    @Update(value = { "UPDATE user SET user_name = #{username}, password = #{password}, name = #{name} WHERE id = #{id}" })

    void updateUser(User user);

   

   

    /**

     * 删除用户

     * @param id

     */

    @Delete(value = { "DELETE FROM user WHERE id = #{id}" })

    void deleteUser(Long id);

}

 

 

8、创建Mapper接口的测试类

package cn.itcast.mapper;



import java.util.List;



import javax.annotation.Resource;



import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;



import cn.itcast.Application;

import cn.itcast.entity.User;



/**

 * Mapper接口的测试类

 * @author JimRestaurant

 */

@RunWith(value = SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = { Application.class })

public class UserMapperTest {


    @Resource

    private UserMapper userMapper;


    /**

     * 测试查询所有用户

     */

    @Test

    public void testFindAll() {

        List<User> list = userMapper.findAll();

        for(User user : list) {

            System.out.println(user);

        }
    }



    /**

     * 测试按姓名查询用户

     */

    @Test

    public void testFindUserByName() {

        List<User> list = userMapper.findUserByName("路");

        for(User user : list) {

            System.out.println(user);

        }
    }

   

    /**

     * 测试按id查询用户

     */

    @Test

    public void testFindUserById() {

        User user = userMapper.findUserById(1L);

        System.out.println(user);
    }



    /**

     * 测试保存用户

     */

    @Test

    public void testSaveUser() {

        User user = new User();

        user.setId(8L);

        user.setUsername("fengeer");

        user.setPassword("654321");

        user.setName("芬格尔");

        userMapper.saveUser(user);

    }



    /**

     * 测试更新用户

     */

    @Test

    public void testUpdateUser() {

        User user = userMapper.findUserById(8L);

        user.setUsername("angre");

        user.setName("昂热");

        userMapper.updateUser(user);

    }



    /**

     * 测试删除用户

     */

    @Test

    public void testDeleteUser() {

        userMapper.deleteUser(8L);
    }

}

 

 

 

 

9、结果显示

测试查询所有用户

 

  • 测试按姓名查询用户

  • 仔细看我的SQL语句,按姓名查询用户,我使用的是模糊查询。

  • #{name}  和  ‘%${name}%’ 的区别:

    • ${name} :明确指定某个值。
    • ‘%${name}%’ :在SQL中,% 表示占位符,很明显,我前面只要是name LIKE ‘%${name}%’ ,那么就能查询用户姓名包含了我指定的name的所有用户。

 

至此,SpringBoot整合MyBatis(注解配置SQL)完成!


请查看我的其他博客,有关于SpringBoot整合MyBatis(XML文件配置SQL)的文件!

 

 

发布了23 篇原创文章 · 获赞 1 · 访问量 1641

猜你喜欢

转载自blog.csdn.net/weixin_43978412/article/details/100561271