SpringBoot专栏(三) -- SpingBoot集成MyBatis框架

解决问题:

SpringBoot2.0集成MyBatis持久化框架?

本章基于SpringBoot专栏(二) -- 搭建第一个SpringBoot项目的代码

1. 导入依赖和修改Spring配置文件

1.1 在pom.xml中导入Mybatis第三方依赖和mysql数据库连接驱动包,如图:

1.2 修改SpringBoot配置文件

spring:
  profiles:
    active: dev
# 为SpringBoot添加数据源,包括url,username,password,数据库驱动名 datasource: url: jdbc:mysql:
//192.168.43.167:3306/mungerTest01 username: root password: Munger_123 driver-class-name: com.mysql.jdbc.Driver
# SpringBoot第三方依赖,mybatis的配置文件 mybatis: typeAliasesPackage: com.mungerz.dao mapperLocations: classpath:mapper
/*.xml

1.3 使用工具自动生成MyBatis持久代码

详情见博客:利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件

1.4 把代码放到SpringBoot项目中。 

添加业务代码:

ApiController.java

package com.mungerz.controller;

import com.mungerz.service.ApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

// RestController注解:说明该类是一个Controller,并且参数和返回值都要求符合Restful要求(即Json字符串)
@RestController
// RequestMapping注解:Controller的类的映射地址。
@RequestMapping("/api")
public class ApiController {

    // Autowired自动注入注解:相当于new ApiService,不过这个工作是由Spring容器自己完成的。AutoWired可以注入Controller,Service,Component这几种类。
    @Autowired
    private ApiService apiService;

    // RequestMapping注解:方法的映射地址
    @RequestMapping("/info")
    public Map<String, Object> info(Map<String, Object> params){
        return apiService.info(params);
    }

    @RequestMapping("/insert")
    public Map<String, Object> insert(Map<String, Object> params){
        return apiService.insert(params);
    }
}

ApiService.java

package com.mungerz.service;

import java.util.Map;

// Service层接口
public interface ApiService {
    Map<String, Object> info(Map<String, Object> params);
    Map<String, Object> insert(Map<String, Object> params);
}

ApiServiceImpl.java

package com.mungerz.service;

import com.mungerz.dao.StudentMapper;
import com.mungerz.domain.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

// Service注解:说明该类是一个Service类,从逻辑上我们可以知道这个类属于Service层,应该写业务逻辑;从功能上,这个类是可以通过Autowired注解注入的。
@Service
public class ApiServiceImpl implements ApiService {

   @Autowired
private StudentMapper studentMapper; @Override public Map<String, Object> info(Map<String, Object> params) { Map<String, Object> result = new HashMap<>(); result.put("result", "hello world"); return result; } public Map<String, Object> insert(Map<String, Object> params){ Student student = new Student(); student.setAge(25); student.setName("mungerz"); studentMapper.insert(student); Map<String, Object> result = new HashMap<>(); result.put("result", "insert ?"); return result; } }

StudentMapper.xml中的代码有改动:(因为表的主键是自增的,自动生成的默认需要传入自增主键)

  <insert id="insert" parameterType="com.mungerz.domain.Student">
    insert into student (name, age
      )
    values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}
      )
  </insert>

注意:文件目录中,mapper的目录是和application.xml中配置的路径对应的

1.4 测试(省略)

(转载请标明出处)

原文地址:https://www.cnblogs.com/mungerz/p/10410923.html