SpringBoot整合Mybatis(一)

准备

1、使用Mysql数据库,创建表user

create table user (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT '用户名',
  `nickname` varchar(32) NOT NULL DEFAULT '' COMMENT '昵称',
  `password` varchar(64) NOT NULL DEFAULT '' COMMENT '密码',  
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


整合

1、添加依赖

mybatis-spring-boot-starter:1.3.1

在pom.xml中添加对Mybatis的依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

2、配置

  • 配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=
  • 配置Mybatis

如果需要的话,可以进行配置,这里只列举两个最常用的。

#引入Mybatis配置文件
mybatis.config-location=classpath:mybatis/mybatis-config.xml
#自动加载Mapper文件
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
  • 配置Mapper扫描器

有两种方式可以进行配置

第一种方式:在启动类上添加@MapperScan注解进行配置

@SpringBootApplication
@MapperScan(basePackages="com.mh.**.repository")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

第二种方式:在Mapper接口上添加@Mapper注解

@Mapper
public interface UserRepository {
}

3、编码

  • 添加User实体类
public class User {
    private Long id;
    private String nickname;
    private String username;
    private String password;
    // get/set 方法
}
  • 添加Mapper接口
public interface UserRepository {

    @Insert("insert into user(username, nickname, password) values(#{username}, #{nickname}, #{password})")
    int addUser(@Param("username") String username, @Param("nickname") String nickname, @Param("password") String password);

    @Delete("delete from user where id = #{id}")
    int deleteUser(int id);

    @Update("update user set nickname=#{nickname} where id = #{id}")
    int updateNickname(@Param("nickname") String nickname, @Param("id") int id);


    @Select("select * from user where username = #{username}")
    @Results({
        @Result(property = "id",  column = "id"),
        @Result(property = "username", column = "username"),
        @Result(property = "nickname", column = "nickname"),
        @Result(property = "password", column = "passwd")
    })
    User findByUsername(String username);
}
  • 使用XML文件编写SQL(使用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.demo.repository.UserRepository">
    <resultMap id="BaseResultMap" type="com.demo.model.User" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="username" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
        <result column="nickname" property="nickname" jdbcType="VARCHAR"/>
    </resultMap>

    <sql id="Base_Column_List">
        id,username,password,nickname
    </sql>

    <select id="findUserByUsername" parameterType="java.lang.String" resultMap="BaseResultMap" >
        SELECT
            <include refid="Base_Column_List" />
        FROM ueri_user
            WHERE username = #{username}
    </select>
</mapper>


测试

1、添加测试的依赖

全部的追加内容为

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

<dependencies>
    <!-- mybatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.1</version>
    </dependency>

    <!-- webmvc -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- 单元测试 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- 热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

<build>
   <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2、编写测试用例

@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void contextLoads() {
        userRepository.addUser("test", "testuser", "123");
        User user = userRepository.findUserByUsername("test");
        System.out.println(user);
    }
}

猜你喜欢

转载自blog.csdn.net/gongm24/article/details/79870643