Spring boot-MyBatis整合

1.pom.xml 添加mysql,mybatis等依賴。

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

2.application.yml:添加數據庫連接信息和mybatis配置信息(默認使用hikari高性能連接池)

server:
  port: 8080

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mybatis-demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver

mybatis:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  configuration:
    map-underscore-to-camel-case: true    # 開啓駝峯命名自動轉換

logging:
  level:
    root: debug

3.入口類添加註解@EnableTransactionManagement,激活事務管理

@SpringBootApplication
@EnableTransactionManagement
public class MybatistestApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatistestApplication.class, args);
    }
}

4.創建實體類(數據庫創建對應表)

/**
 * @Author 犀角
 * @Date 2019/9/18 8:42
 * @Description
 */
public class Person {

    private String id;

    private String name;

    private String sex;

    private Integer age;

    private String phone;

    private String address;

    public String getId(){ return id;}

    public void setId(String id) { this.id = id;}

    public String getName(){ return name; }

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

    public String getSex() { return sex; }

    public void setSex(String sex) { this.sex = sex; }

    public Integer getAge() { return age; }

    public void setAge(Integer age) { this.age = age; }

    public String getPhone() { return phone; }

    public void setPhone(String phone) { this.phone = phone; }

    public String getAddress() { return address; }

    public void setAddress(String address) { this.address = address; }

    @Override
    public String toString() {
        return "Person{" +
                "id='" + id +'\''+
                ",name='"+ name +'\''+
                ",sex='" + sex + '\'' +
                ",age=" +age +
                ",phone='" + phone + '\'' +
                ",address='" + address +'\'' +
                '}';
    }
}

5.添加 dao 層,使用註解方式以及Mapper映射(在resources文件夾下新建一個文件夾mapper:)

/**
 * @Author 犀角
 * @Date 2019/9/18 9:05
 * @Description
 */
@Mapper
public interface PersonDao {

    /**
     * 查詢所有Person
     * @return
     */
    List<Person> list();

    /**
     * 新增person
     * @param person
     * @return
     */
    Integer insert(Person person);
    /**
     * 刪除person
     * @param id
     * @return
     */
    Integer delete(String id);
    /**
     * 刪除person
     * @param list
     * @return
     */
    Integer deleteList(@Param("list") List<String> list);

    /**
     * 修改person
     * @param person
     * @return
     */
    Integer update(Person person);
}
<?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.jst.mybatis.demo.dao.PersonDao">
    <resultMap id="personMap" type="com.jst.mybatis.demo.model.Person"></resultMap>


    <select id="list" resultMap="personMap">
        SELECT
            *
        FROM
            PERSON
    </select>

    <insert id="insert">
        INSERT INTO
            PERSON
            (id,`name`,sex,age,phone,address)
        VALUES
            (#{id},#{name},#{sex},#{age},#{phone},#{address})
    </insert>

    <delete id="delete">
        DELETE FROM PERSON
        WHERE id=#{id}
    </delete>

    <delete id="deleteList">
        DELETE FROM PERSON
        WHERE id in 
        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>

    <update id="update">
         update PERSON set
          name = #{name},
          sex = #{sex},
          age = #{age},
          phone = #{phone},
          address=#{address}
  where id = #{id}

    </update>
</mapper>

6.添加 service 層,並在該層進行事務管理

package com.jst.mybatis.demo.service;
import com.jst.mybatis.demo.model.Person;
import java.util.List;

/**
 * @Author 犀角
 * @Date 2019/9/17 17:50
 * @Description
 */
public interface PersonService {
    /**
     * 查詢所有person
     * @return
     */
    List<Person> list();
    /**
     * 新增person
     * @param person
     */
    Integer insert(Person person);
    /**
     * 刪除person
     * @param id
     */
    Integer delete(String id);
    /**
     * 刪除person
     * @param id
     */
    Integer deleteList(List<String> id);
    /**
     * 修改person
     * @param person
     */
    Integer update(Person person);
}

Service 實現層

package com.jst.mybatis.demo.service;
import com.jst.mybatis.demo.dao.PersonDao;
import com.jst.mybatis.demo.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

/**
 * @Author 犀角
 * @Date 2019/9/17 20:57
 * @Description
 */
@Service
public class PersonServiceImpl implements PersonService {
    @Autowired
    private PersonDao personDao;

    @Override
    public List<Person> list() {
        return personDao.list();
    }

    @Override
    public Integer insert(Person person) {
        return personDao.insert(person);
    }

    @Override
    public Integer delete(String id) {
        return personDao.delete(id);
    }

    @Override
    public Integer deleteList(List<String> id) {
        return personDao.deleteList(id);
    }

    @Override
    public Integer update(Person person){
        return  personDao.update(person);
    }
}

7.Controller層

package com.jst.mybatis.demo.controller;

import com.jst.mybatis.demo.model.Person;
import com.jst.mybatis.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author 犀角
 * @Date 2019/9/17 17:39
 * @Description
 */
@RestController
@RequestMapping("/mybatis/demo")
public class PersonController {

    @Autowired
    private PersonService personService;

    @RequestMapping(method = RequestMethod.GET,value = "list")
    public List<Person> list(){
        return personService.list();
    }

    @PostMapping("insert")
    public Integer insert(@RequestBody Person person){
        return personService.insert(person);
    }

    @PostMapping("delete")
    public Integer delete(@RequestParam String id){
        return personService.delete(id);
    }

    @PostMapping("deleteList")
    public Integer deleteList(@RequestBody List<String> id){
        return personService.deleteList(id);
    }
    @PostMapping("update")
    public Integer update(@RequestBody Person person){
        return personService.update(person);
    }
}
  • @RequestParam 用於將請求參數區數據映射到功能處理方法的參數上,value:參數名字,即入參的請求參數名字,如userName表示請求的參數區中的名字爲userName的參數的值將傳入,required:是否必須,默認是true,表示請求中一定要有相應的參數,否則將報404錯誤碼;
  • @Controller和@RestController的區別

 

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