SpringBoot 整合 Mybatis(二)xml 版

目錄

一 引入依賴

二 表結構設計

三 配置數據源

四 代碼實現

4.1 配置指定 domain 掃描包。

4.2 dao 層代碼接口和實現

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:
  mapper-locations: classpath:dao/*.xml # xml文件路徑
  type-aliases-package: com.sb.domain  # 注意:對應實體類的路徑

4.2 dao 層代碼接口和實現

dao 類

package com.sb.dao;

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

import java.util.List;

@Mapper
public interface UserDao {

    User getUserById(Long id);

    public List<User> getUserList();

    public int add(User user);

    public int update(@Param("id") Long id, @Param("user") User user);

    public int delete(Long id);

}

xml 文件

<?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.sb.dao.UserDao" >
    <resultMap id="BaseResultMap" type="com.sb.domain.User" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
        <result column="create_datetime" property="createDatetime" jdbcType="TIMESTAMP"/>
        <result column="update_datetime" property="updateDatetime" jdbcType="TIMESTAMP"/>
    </resultMap>

    <sql id="Base_Column_List" >
        id, name, age, create_datetime, update_datetime
    </sql>

    <select id="getUserList" resultMap="BaseResultMap"  >
        SELECT
        <include refid="Base_Column_List" />
        FROM user
    </select>

    <select id="getUserById" parameterType="java.lang.Integer" resultMap="BaseResultMap" >
        SELECT
        <include refid="Base_Column_List" />
        FROM user
        WHERE id = #{id}
    </select>

    <insert id="add" parameterType="com.sb.domain.User" >
        INSERT INTO
        user
        (name, age, create_date_time, update_date_time)
        VALUES
        (#{name}, #{age}, #{createDatetime}, #{updateDatetime})
    </insert>

    <update id="update" parameterType="java.util.Map" >
        UPDATE
        user
        SET
        name = #{user.name},age = #{user.age}
        WHERE
        id = #{id}
    </update>

    <delete id="delete" parameterType="java.lang.Integer" >
        DELETE FROM
        user
        WHERE
        id = #{id}
    </delete>
</mapper>

添加 @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));
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章