Spring Boot(二): 集成Mybatis

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36146275/article/details/79275976

上一篇讲述了什么是Spring Boot、如何创建Sping Boot项目以及如何通过配置修改端口号;

本篇将讲述Spring Boot与Mybatis的整合过程。

一、添加mybatis以及mysql数据库驱动的依赖

 在pom.xml文件添加如下内容:

		<!--mysql数据库连接驱动-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!--mybatis支持SpringBoot包-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>


二、配置mysql数据源和mybatis映射mapper文件路径


mybatis映射mapper文件路径默认在resources目录下,因此配置的classpath:mappers/*.xml,

意思就是【resources/mappers】下的所有xml文件



三、编写接口访问数据库

3.1接口目录结构


3.2 controller层:注解@RestController已经组合了SpringMVC的@Controller注解,使之成为控制器

package com.xft.xftbase.actor.controller;

import com.xft.xftbase.actor.domain.ActorVO;
import com.xft.xftbase.actor.service.ActorService;
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 org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 系统角色控制器
 * @author lgy
 * @date 2018/02/07
 */
@RestController
public class ActorController {

    @Autowired
    ActorService actorService;

    /**
     * 角色列表
     * @author lgy
     * @date 2018/02/07
     * @return String
     */
    @RequestMapping(value = "/index")
    @ResponseBody
    List<ActorVO> index(){
        return actorService.findUser();
    }
}

3.3 entity实体类,根据数据表字段生成

package com.xft.xftbase.actor.domain;

import java.sql.Timestamp;

/**
 * @description Actor数据表实体类
 * @author lgy
 * @date 2018/02/07
 */
public class ActorVO {
  private Long actor_id;
  private String first_name;
  private String last_name;
  private java.sql.Timestamp last_update;

  public Long getActor_id() {
    return actor_id;
  }

  public void setActor_id(Long actor_id) {
    this.actor_id = actor_id;
  }

  public String getFirst_name() {
    return first_name;
  }

  public void setFirst_name(String first_name) {
    this.first_name = first_name;
  }

  public String getLast_name() {
    return last_name;
  }

  public void setLast_name(String last_name) {
    this.last_name = last_name;
  }

  public Timestamp getLast_update() {
    return last_update;
  }

  public void setLast_update(Timestamp last_update) {
    this.last_update = last_update;
  }

  @Override
  public String toString() {
    return "ActorVO{" +
            "actor_id=" + actor_id +
            ", first_name='" + first_name + '\'' +
            ", last_name='" + last_name + '\'' +
            ", last_update=" + last_update +
            '}';
  }
}

3.4 dao层:持久化数据到DB

使用注解@Mapper使之成为数据持久层,

如果不添加@Component注解,发布工程时会报此错误:【Consider defining a bean of type 'xxx' in your configuration.】意思是此类未交给Spring容器进行管理,而在程序中又通过@Autowired等方式自动注入,然鹅Spring容器中找不到此类就抛异常了。

package com.xft.xftbase.actor.mapper;

import com.xft.xftbase.actor.domain.ActorVO;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 系统角色dao层
 * @author lgy
 * @date 2018/02/07
 */
@Mapper
@Component(value = "actorMapper")
public interface ActorMapper {

    /**
     * 查询系统所有角色
     * @author lgy
     * @date 2018/02/07
     * @return List
     */
    List<ActorVO> findUser();
}

3.5 service层:定义业务逻辑层的相关接口

业务逻辑层接口:

package com.xft.xftbase.actor.service;

import com.xft.xftbase.actor.domain.ActorVO;

import java.util.List;

/**
 * 系统角色相关接口
 * @author lgy
 * @date 2018/02/07
 */
public interface ActorService {
    /**
     * 查询系统所有角色
     * @author lgy
     * @date 2018/02/07
     * @return String
     */
    List<ActorVO> findUser();
}

实现接口:

package com.xft.xftbase.actor.service.serviceImpl;

import com.xft.xftbase.actor.domain.ActorVO;
import com.xft.xftbase.actor.mapper.ActorMapper;
import com.xft.xftbase.actor.service.ActorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 系统角色业务逻辑层
 * @author lgy
 * @date 2018/02/07
 */
@Component
public class ActorServiceImpl implements ActorService{
    
    @Autowired
    ActorMapper actorMapper1;

    @Override
    public List<ActorVO> findUser() {
        return actorMapper1.findUser();
    }
}

四、SpringBoot程序发布入口

在@SpringBootApplication类中获取数据源、db操作对象、事务管理器,并通过@Bean交给Spring管理

package com.xft.xftbase;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

/**
 * springboot工程发布入口
 *
 * @author lgy
 * @date 2018/02/08
 */
@SpringBootApplication
public class XftBaseApplication {

    public static void main(String[] args) {
        SpringApplication.run(XftBaseApplication.class, args);
    }

    /**
     * 获取数据源
     * @return
     */
    @Bean
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource dataSource() {
        return new org.apache.tomcat.jdbc.pool.DataSource();
    }

    /**
     * 获取DB操作对象
     * @return
     * @throws Exception
     */
    @Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        //映射文件是resource/mapper/目录下所有.xml文件
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mappers/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }

    /**
     * 获取mybatis事务管理器
     * @return
     */
    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}

五、验证结果

结果显示,成功将数据库中的actor表的数据读取


           以上就是SpringBoot整合mybatis的全部过程


猜你喜欢

转载自blog.csdn.net/weixin_36146275/article/details/79275976