SpringBoot 整合 Mybatis(一)注解版

导读:本篇文章讲解 SpringBoot 整合 Mybatis(一)注解版,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

一 引入依赖

二 表结构设计

三 配置数据源

四 代码实现

4.1 配置指定 domain 扫描包。

4.2 Mapper 层代码接口和实现

4.3 Service 层代码接口和实现

4.4 Controller 层代码实现


一 引入依赖

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

<!-- MySQL -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.45</version>
</dependency>

二 表结构设计

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(50) NOT NULL COMMENT '用户名',
  `age` int(11) NOT NULL COMMENT '年龄',
  `create_datetime` datetime NOT NULL COMMENT '创建时间',
  `update_datetime` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

三 配置数据源

application.yml 添加如下配置,数据库、用户名、密码配置成自己的。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/account
    username: root
    password: root

四 代码实现

4.1 配置指定 domain 扫描包。

application.yml 添加如下配置让 mybatis 自动扫描到自定义 domain 类。

mybatis:
  type-aliases-package: com.sb.demo.domain

4.2 dao 层代码接口和实现

package com.sb.dao;

import com.sb.domain.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserDao {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(Long id);

    @Select("SELECT * FROM user")
    public List<User> getUserList();

    @Insert("insert into user(name, age, create_datetime, update_datetime) values(#{name}, #{age}, now(), now())")
    public int add(User user);

    @Update("UPDATE user SET name = #{user.name} , age = #{user.age} WHERE id = #{id}")
    public int update(@Param("id") Long id, @Param("user") User user);

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

}

添加 @MapperScan

package com.sb;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan(basePackages = "com.sb.dao")
@SpringBootApplication
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }

}

4.3 Service 层代码接口和实现

UserService 接口

package com.sb.service;

import com.sb.domain.User;
import java.util.List;

public interface UserService {
    User getUserById(Long id);

    public List<User> getUserList();

    public int add(User user);

    public int update(Long id, User user);

    public int delete(Long id);
}

UserServiceImpl 实现

package com.sb.service.impl;

import com.sb.dao.UserDao;
import com.sb.domain.User;
import com.sb.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserDao userDao;

    @Override
    public User getUserById(Long id) {
        return userDao.getUserById(id);
    }

    @Override
    public List<User> getUserList() {
        return userDao.getUserList();
    }

    @Override
    public int add(User user) {
        return userDao.add(user);
    }

    @Override
    public int update(Long id, User user) {
        return userDao.update(id, user);
    }

    @Override
    public int delete(Long id) {
        return userDao.delete(id);
    }
}

4.4 Controller 层代码实现

package com.sb.controller;

import com.sb.domain.User;
import com.sb.dto.RetDTO;
import com.sb.service.UserService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.*;

@RestController
@RequestMapping(value="/users")
public class UserController {

    @Resource
    private UserService userService;

    @RequestMapping(value={"/list"}, method=RequestMethod.GET)
    public RetDTO<List<User>> getUserList() {
        List<User> r = userService.getUserList();
        return RetDTO.getReturnJson(r);
    }

    @RequestMapping(value="/insert", method=RequestMethod.POST)
    public RetDTO insert(@RequestBody User user) {
        return RetDTO.getReturnJson(userService.add(user));
    }

    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public RetDTO<User> getUser(@PathVariable Long id) {
        return RetDTO.getReturnJson(userService.getUserById(id));
    }

    @RequestMapping(value="/{id}", method=RequestMethod.PUT)
    public RetDTO putUser(@PathVariable Long id, @RequestBody User user) {
        return RetDTO.getReturnJson(userService.update(id, user));
    }

    @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
    public RetDTO deleteUser(@PathVariable Long id) {
        return RetDTO.getReturnJson(userService.delete(id));
    }

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/9589.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!