Spring Boot中集成Mybaties

1、首先加入依赖

    <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2、再application.properties中加入如下内容

spring.datasource.url=jdbc:mysql://localhost:3307/demo?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


mybatis.mapper-locations=classpath:mapper/*.xml

数据库配置请根据自己的情况进行修改,最后一个配置是mapper xml文件的配置路径

3、数据库内容如下

 

 

4、bean层,对于数据库中的student

package com.example.demo.bean;

public class Student {

    private int id;
    private String name;
    private String password;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPassword() {
        return password;
    }

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

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

    public void setPassword(String password) {
        this.password = password;
    }
}

 

5、controller层

package com.example.demo.controller;

import com.example.demo.bean.Student;
import com.example.demo.server.StudentServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

@Controller
public class StudentController {

    @Autowired
    StudentServer studentServer;

    @ResponseBody
    @RequestMapping(value = "getName",method = GET,produces = "application/json;charset=utf-8")
    public String getName(){
        Student student = null;
        student = studentServer.findStudentById(1);
        if(student!=null){
            return student.getName();
        }else{
            return "无";
        }
    }
}

 

方法1 、 使用带xml文件的

在Resources新建mapper文件夹,在建立一个student.mapper文件,内容如下

<?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.example.demo.dao.StudentDao">
    <select id="findStudentById" parameterType="int" resultType="com.example.demo.bean.Student">
        select * from student where id = #{id}
    </select>
</mapper>

在dao层,可以使用@Respository+@MapperScan 或者直接使用@Mapper

@Repository
public interface StudentDao {

    public Student findStudentById(int id);

}

方法2,不用xml文件,dao层

package com.example.demo.dao;

import com.example.demo.bean.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Repository;

@Mapper
public interface StudentDao2 {

    @Select("select * from student where id = #{id}")
    public Student findStudentById(int id);
}

 

 

服务层:(这里写了三种情况,

              studentDao是使用@Respository+@MapperScan ,

              studentDao1是使用@Mapper进行测试的

              studenDao2是不用xml文件进行测试的   )

package com.example.demo.server.impl;

import com.example.demo.bean.Student;
import com.example.demo.dao.StudentDao;
import com.example.demo.dao.StudentDao1;
import com.example.demo.dao.StudentDao2;
import com.example.demo.server.StudentServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentServerImpl implements StudentServer {

    @Autowired
    //StudentDao studentDao;
    //StudentDao1 studentDao1;  //虽然会提示有错,但是可以正常运行,有时间再看具体原因
    StudentDao2 studentDao2;



    @Override
    public Student findStudentById(int id) {
        Student student = null;
        /*使用@Respository+@MapperScan*/
        //student = studentDao.findStudentById(id);
        //student = studentDao1.findStudentById(id);

        student = studentDao2.findStudentById(id);
        return student;
    }
}

这三个最后都能显示正确的答案

    

 

 

持续更新中!!!

 

posted @ 2020-03-17 15:21  一花一世界!  阅读(300)  评论(0编辑  收藏  举报