精通 Spring Boot 系列 13

Spring Boot 整合 MyBatis MyBatis 是目前优秀的 ORM 框架,支持普通的数据库操作,几乎消除了常规的 JDBC 操作,极大简化我们的开发操作。 1)编辑 pom.xml 文件 <project xmlns="http:/...

Spring Boot 整合 MyBatis

MyBatis 是目前优秀的 ORM 框架,支持普通的数据库操作,几乎消除了常规的 JDBC 操作,极大简化我们的开发操作。

1)编辑 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>com.nx</groupId>
    <artifactId>springbootdata</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- 添加spring-boot-starter-web模块依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 添加spring-boot-starter-thymeleaf模块依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!-- 添加MySQL依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- 添加MyBatis依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

2)编辑 application.properties 文件

####################
### 数据源信息配置 ###
####################
# 数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdata?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
# 用户名
spring.datasource.username=root
# 密码
spring.datasource.password=1234
# 数据库驱动
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
# 指定连接池中最大的活跃连接数.
spring.datasource.max-active=20
# 指定连接池最大的空闲连接数量.
spring.datasource.max-idle=8
# 指定必须保持连接的最小值
spring.datasource.min-idle=8
# 指定启动连接池时,初始建立的连接数量
spring.datasource.initial-size=10

3)创建 User 持久化类

public class User implements Serializable{

    private static final long serialVersionUID = 1L;

    private int id ;
    private String loginName ;
    private String username ;
    private String password;

    // setXxx 和 getXxx 方法
}

4)创建 UserRepository 数据访问接口

public interface UserRepository {

    @Insert("insert into tb_user(login_name ,username ,password) "
                + "values (#{loginName},#{username},#{password})")
    public int insertUser(User user);

    // 插入数据获取主键
    @Insert("insert into tb_user(login_name ,username ,password) "
            + "values (#{loginName},#{username},#{password})")
    @Options(useGeneratedKeys=true,keyProperty="id",keyColumn="id")
    public void insertGetKey(User user);


    @Select("select * from tb_user where username = #{username}")
    // 引用id="userResult"的@Results
    @ResultMap("userResult")
    public User selectByUsername(@Param("username")String username);

    @Select("select * from tb_user")
    // @Results用于映射对象属性和数据库列,常用于对象属性和数据库列不同名情况
    @Results(id="userResult",value={
            @Result(id=true,column="id",property="id"),
            @Result(column="login_name",property="loginName"),
            @Result(column="password",property="password"),
            @Result(column="username",property="username")
        })
    public List<User> findAll();


    @Delete("delete from tb_user where id=#{id}")
    public void delete(final Integer id);


    @Select("select * from tb_user where id=#{id}")
    // 引用id="userResult"的@Results
    @ResultMap("userResult")
    public User findUserById(int id);

    @Update("update tb_user set username=#{username}, login_name=#{loginName} where id=#{id}")
    public void update(final User user);
}

5)创建 UserService 业务层类

@Service
public class UserService {

    // 注入UserRepository
    @Resource
    private UserRepository userRepository;

    public int insertUser(User user){
        return userRepository.insertUser(user);
    }

    public User selectByUsername(String username){
        return userRepository.selectByUsername(username);
    }

    public List<User> findAll(){
        return userRepository.findAll();
    }

    public void insertGetKey(User user) {
        userRepository.insertGetKey(user);
    }

    public void update(User user) {
        userRepository.update(user);
    }

    public void delete(Integer id) {
        userRepository.delete(id);
    }
}

6)创建 UserController 控制器类

@RestController
@RequestMapping("/user")
public class UserController {

    // 注入UserService
    @Resource
    private UserService userService;

    @RequestMapping("/insertUser")
    public String insertUser(User user){
        return "插入数据["+userService.insertUser(user)+"]条";
    }

    @RequestMapping("/insertGetKey")
    public User insertGetKey(User user) {
        userService.insertGetKey(user);
        return user ;
    }

    @RequestMapping("/selectByUsername")
    public User selectByUsername(String username){
        return userService.selectByUsername(username);
    }

    @RequestMapping("/findAll")
    public List<User> findAll(){
        return userService.findAll();
    }

    @RequestMapping("/update")
    public void update(User user) {
        userService.update(user);
    }

    @RequestMapping("/delete")
    public void delete(Integer id) {
        userService.delete(id);
    }
}

7)测试

http://localhost:8080/user/insertUser?loginName=shuaishuai&username=帅帅&password=123123

相关阅读:

精通 Spring Boot 系列(汇总)

精通 Spring Boot 系列 01

精通 Spring Boot 系列 02

精通 Spring Boot 系列 03

精通 Spring Boot 系列 04

精通 Spring Boot 系列 05

精通 Spring Boot 系列 06

精通 Spring Boot 系列 07

精通 Spring Boot 系列 08

精通 Spring Boot 系列 09

精通 Spring Boot 系列 10

精通 Spring Boot 系列 11

精通 Spring Boot 系列 12

  • 发表于 2020-06-16 14:18
  • 阅读 ( 47 )

相关问题

1 条评论

请先 登录 后评论
江帅帅 | 奈学教育
江帅帅 | 奈学教育

架构师

18 篇文章

作家榜 »

  1. 58沈剑 291 文章
  2. 奈学教育 60 文章
  3. 江帅帅 | 奈学教育 18 文章
  4. 林淮川 | 奈学教育 3 文章
  5. nxadmin 2 文章
  6. Carry Yip 1 文章
  7. 悅悅酱的小时候 1 文章
  8. Osheep 1 文章