SpringBoot成长笔记(三)整合mybatis、mysql数据库

引言

数据库在系统应用中比较常用,本章介绍springboot结合数据库区做应用。

环境搭建

pom文件引入依赖

        <!--mybatis-->
	<dependency>
	    <groupId>org.mybatis.spring.boot</groupId>
	    <artifactId>mybatis-spring-boot-starter</artifactId>
	    <version>1.3.1</version>
	</dependency>
        <!--数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--数据库连接池-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </dependency>
        <!--阿里druid数据源-->
        <!--<dependency>-->
            <!--<groupId>com.alibaba</groupId>-->
            <!--<artifactId>druid</artifactId>-->
            <!--<version>1.0.29</version>-->
        <!--</dependency>-->

application.properties增加数据源配置文件

#多数据源,自定义
spring.mysql.url=jdbc:mysql://10.45.157.180:3306/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.mysql.username=root
spring.mysql.password=123456
spring.mysql.driver-class-name=com.mysql.jdbc.Driver
spring.mysql.validationQuery=SELECT 1
spring.mysql.testWhileIdle=true

代码

1、数据源代码,如果配置多个数据源,在application.properties中增加不同的数据源前缀,然后MysqlDatasource中增加不同的bean去标识数据源。

package com.znv.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

/**
 * Mysql数据源配置
 * Created by MHm on 2018/8/13.
 */
@Configuration
@MapperScan(basePackages = {"com.znv.dao.mapper"},sqlSessionFactoryRef = "MySqlSessionFactory")
public class MysqlDatasource {

    /**
     * 数据源
     * @return
     */
    @Bean(name = "primaryDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.mysql")
    public javax.sql.DataSource dataSource() {
        //考虑如何使用druid的数据源
        return new org.apache.tomcat.jdbc.pool.DataSource();
        //return DataSourceBuilder.create().build();
        //return new DruidDataSource();
    }

    /**
     * sessionFactory
     * @return
     * @throws Exception
     */
    @Bean(name = "MySqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactoryBean.setMapperLocations(resolver
        .getResources("classpath:/mapper/**/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }

    /**
     * 事务管理
     * @return
     */
    @Bean(name = "mysqlPlatformTransactionManager")
    @Primary
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}

2、从mybatis的配置文件开始,DictMapper.xml

<?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.znv.dao.mapper.DictMapper">
    <!--通过<resultMap>映射实体类属性名和表的字段名对应关系 -->
    <resultMap id="DictBean" type="java.util.HashMap">
        <result property="alarmType" column="alarm_type"/>
        <result property="alarmLevel" column="alarm_level"/>
        <result property="name" column="name"/>
    </resultMap>

    <select id="queryDictList" resultMap="DictBean">
        select * FROM t_dict_alarmtype WHERE 1 = 1
        <if test="type != 0">AND alarm_type = #{type}</if>
    </select>
</mapper>

目录如下

3、创建Mapper的接口

package com.znv.dao.mapper;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * 
 * Created by MHm on 2018/8/13.
 */
@Repository
public interface DictMapper {

    List<Map<String, String>> queryDictList(@Param(value = "type")String type);
}

4、 创建service的接口,实现业务类。

package com.znv.service;

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

/**
 *
 * Created by MHm on 2018/8/13.
 */
public interface DictService {
    List<Map<String,String>> queryDictList(String type);
}
package com.znv.service.impl;

import com.znv.dao.mapper.DictMapper;
import com.znv.service.DictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

/**
 * 
 * Created by MHm on 2018/8/13.
 */
@Service
public class DictServiceImpl implements DictService{
    @Autowired
    private DictMapper dictMapper;


    @Override
    public List<Map<String, String>> queryDictList(String type) {
        return  dictMapper.queryDictList(type);
    }
}

 5、restful的controller对外提供接口

package com.znv.controller;

import com.alibaba.fastjson.JSONObject;
import com.znv.service.DictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * 
 * Created by MHm on 2018/8/13.
 */
@RestController
public class DictController {
    @Autowired
    private DictService dictService;
    @RequestMapping(value = "/dict/queryDictList", method = RequestMethod.GET)
    public String queryDictList(@RequestParam(value = "type", required = true) String type){
        List<Map<String, String>> list = dictService.queryDictList(type);
        return JSONObject.toJSONString(list);
    }

    @RequestMapping(value = "/dict/queryAlarmTypeList", method = RequestMethod.GET)
    public String queryAlarmTypeList(){
        List<Map<String, String>> list = dictService.queryDictList("1");
        return JSONObject.toJSONString(list);
    }

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test(){
        return "hello test";
    }
}

6、运行Application,浏览器输入http://localhost:8088/dict/queryAlarmTypeList

猜你喜欢

转载自blog.csdn.net/mhm52368/article/details/81635295