SpringBoot學(xué)習(xí)(6-1)— 整合Mybatis

一,介紹

MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。

MyBatis 與JPA對(duì)比

  • jpa是對(duì)象與對(duì)象之間的映射,而mybatis是對(duì)象和結(jié)果集的映射。
  • jpa移植性比較好,不用關(guān)心用什么數(shù)據(jù)庫(kù),因?yàn)閙ybatis自由寫sql語(yǔ)句,所以當(dāng)項(xiàng)目移植的時(shí)候還需要對(duì)sql進(jìn)行修改。
  • 當(dāng)需要修改字段的時(shí)候mybatis改起來(lái)特別費(fèi)事,而jpa就相對(duì)簡(jiǎn)單。
  • 如果用hibernate學(xué)習(xí)起來(lái)比較費(fèi)時(shí)間,而mybatis相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,也可以用springdata,但個(gè)人覺(jué)得springdata只適合單表。

二,實(shí)現(xiàn)過(guò)程和示例代碼

(1)Maven引包

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

(2)配置

  • yml配置 src/main/resources/application.yml
spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/esystem?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
mybatis:
  configuration:
    map-underscore-to-camel-case: true
    useColumnLabel: true
  config-location:
    classpath: config/mybatis-config.xml
  type-aliases-package: com.eceibs.report.entity
  • mybatis配置 src/main/resources/config/mybatis-config.xml
<configuration>
    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer" />
        <typeAlias alias="Long" type="java.lang.Long" />
        <typeAlias alias="HashMap" type="java.util.HashMap" />
        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
        <typeAlias alias="ArrayList" type="java.util.ArrayList" />
        <typeAlias alias="LinkedList" type="java.util.LinkedList" />
    </typeAliases>
</configuration>

(3)Mapper映射

package com.eceibs.report.mapper;
import com.eceibs.report.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;

@Mapper
@Repository
public interface UserMapper{
    @Select("select * from user where id = #{id}")
    public User findId(Integer id);
    @Select("select * from user")
    public List<User> findAll();
}

(4)各層代碼編寫

  • entity
package com.eceibs.report.entity;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.List;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @NotNull(message="企業(yè)編號(hào)不能為空!")
    @Column(length=11)
    private Integer companyId;

    @NotNull(message="登錄名不能為空!")
    @Column(length=64)
    private String loginName;

    @NotNull(message="用戶名不能為空!")
    @Column(length=64)
    private String username;

    @NotNull(message="部門ID不能為空!")
    @Column(length=64)
    private Integer departmentId;


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

    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setDepartmentId(Integer departmentId) {
        this.departmentId = departmentId;
    }

    public Integer getId() {
        return id;
    }

    public Integer getCompanyId() {
        return companyId;
    }

    public String getLoginName() {
        return loginName;
    }

    public String getUsername() {
        return username;
    }

    public Integer getDepartmentId() {
        return departmentId;
    }


}
  • service
package com.eceibs.report.service;

import com.eceibs.report.entity.User;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface UserService {
    public List<User> list();

    public User getUserById(Integer id);

    public PageInfo<User> findByPage(Integer page,Integer size);
}

  • service.impl
package com.eceibs.report.service.impl;

import com.eceibs.report.mapper.UserMapper;
import com.eceibs.report.entity.User;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.eceibs.report.service.UserService;

import java.util.List;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> list() {
        List<User> list= userMapper.findAll();
        return  list;//拿到list集合
    }

    @Override
    public User getUserById(Integer id){
        User user = userMapper.findId(id);
        return user;
    }

    @Override
    public PageInfo<User> findByPage(Integer page ,Integer size){
        PageHelper.startPage(page, size);
        List<User> userList = userMapper.findAll();
        PageInfo<User> pageInfo = new PageInfo<>(userList);
        return pageInfo;
    }

}

  • controller
package com.eceibs.report.controller;

import com.eceibs.report.entity.CommentLesson;
import com.eceibs.report.entity.Department;
import com.eceibs.report.entity.Resources;
import com.eceibs.report.entity.User;
import com.eceibs.report.exception.RRException;
import com.eceibs.report.service.CommentLessonService;
import com.eceibs.report.service.DepartmentService;
import com.eceibs.report.service.ResourcesService;
import com.eceibs.report.service.UserService;
import com.eceibs.report.util.RedisUtil;
import com.eceibs.report.util.Result;
import com.eceibs.report.util.ResultUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
public class DemoController {

    @Resource
    private UserService userService;

    @RequestMapping("/hello")
    public String Demotest(){
        return "hello,world";
    }

    @RequestMapping("/user")
    public List<User> getAll() throws Exception{
        List<User> userList = userService.list();
        return userList;
    }

    @GetMapping("/userinfo/{id}")
    public Result<User> getUserById(@PathVariable("id") Integer id){
        User user = userService.getUserById(id);
        return ResultUtil.success(user);
}


    @GetMapping("/userinfos")
    public User getUserByIds(Integer id){
        User user = userService.getUserById(id);
        return user;
    }

}

(5)測(cè)試

image.png

三,小結(jié)

由于mybatis的靈活性,故在開(kāi)發(fā)報(bào)表服務(wù)比較適合使用該框架。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容