Intellij IDEA 搭建Spring Boot项目spring-dao的相关配置

Posted 若兰明月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intellij IDEA 搭建Spring Boot项目spring-dao的相关配置相关的知识,希望对你有一定的参考价值。

Intellij IDEA 搭建Spring Boot项目 –>spring-dao的相关配置

标签(空格分隔): SpringBoot JAVA后台


前言

spring boo默认已经配置了很多环境变量,例如,tomcat的默认端口是8080,项目的contextpath是“/”等等,可以在这里看spring boot默认的配置信息

配置数据库连接和数据源

第一步

在application.properties文件里面加入

#jdbc的相关配置  username和password已经加密了
#数据库驱动
jdbc.driver=com.mysql.jdbc.Driver
#数据库连接
jdbc.url=jdbc:mysql://localhost:3306/cntest?useUnicode=true&characterEncoding=utf8
#数据库用户名(已经加密)
jdbc.username=WnplV/ietfQ=
#数据库密码(已经加密)
jdbc.password=WnplV/ietfQ=

#SqlSessionFactoryConfiguration
mybatis_config_file = mybatis-config.xml
#mybatis mapper文件所在路径
mapper_path = /mapper/**.xml
#实体类所在的package
type_alias_package = com.ruolan.springtest.entity

上面涉及到的mybatis-config.xml文件和mapper_path对应包结构和目录如下图(还是图比较方便哈)

第二步配置DataSource连接池

springboot允许我们通过代码的方式配置我们需要的数据源,比如我们经常使用的c3p0 JDBC连接池,怎么配置呢?如下图所示

我们需要创建DataSourceConfiguration.class这个类


//这个代表配置需要写到spring ioc这个容器里面
@Configuration
//配置mybatis mapper的扫描路径  这个扫描位置配置好就行 不需要进行其他配置  会自动扫描mapper的
@MapperScan("com.ruolan.springtest.dao")
public class DataSourceConfiguration 
    //这里通过这种方式获取到application.properties里面定义的相关配置
    @Value("$jdbc.driver")
    private String jdbcDriver;
    @Value("$jdbc.url")
    private String jdbcUrl;

    @Value("$jdbc.username")
    private String jdbcUsername;

    @Value("$jdbc.password")
    private String jdbcPassword;

    /**
     * 生成与spring-dao.xml对应的bean  dataSource
     * @return
     */
    @Bean(name = "dataSource")
    public ComboPooledDataSource createDataSource() throws PropertyVetoException 
        //创建DataSource实例
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(jdbcDriver);
        dataSource.setJdbcUrl(jdbcUrl);
        dataSource.setUser(DESUtils.getDecryptString(jdbcUsername));
        dataSource.setPassword(DESUtils.getDecryptString(jdbcPassword));
        //配置c3p0连接池的私有属性
        //连接池的最大线程数量
        dataSource.setMaxPoolSize(30);
        //连接池的最小线程数量
        dataSource.setMinPoolSize(30);
        //连接池不自动commit
        dataSource.setAutoCommitOnClose(false);
        //连接超时时间
        dataSource.setCheckoutTimeout(10000);
        //连接失败自动重试次数
        dataSource.setAcquireRetryAttempts(2);

        return dataSource;
    

其实上面的类的相关作用就类似我们之前ssm的时候配置的spring-dao.xml里面的dataSource一样(如下)

<!-- 2.数据库连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 配置连接池属性 -->
        <property name="driverClass" value="$jdbc.driver" />
        <property name="jdbcUrl" value="$jdbc.url" />
        <property name="user" value="$jdbc.username" />
        <property name="password" value="$jdbc.password" />

        <!-- c3p0连接池的私有属性 -->
        <property name="maxPoolSize" value="30" />
        <property name="minPoolSize" value="10" />
        <!-- 关闭连接后不自动commit -->
        <property name="autoCommitOnClose" value="false" />
        <!-- 获取连接超时时间 -->
        <property name="checkoutTimeout" value="10000" />
        <!-- 当获取连接失败重试次数 -->
        <property name="acquireRetryAttempts" value="2" />
    </bean>

第三步配置sqlSessionFactory

和配置DataSource类似,我们创建一个SqlSessionFactoryConfiguration.class


//加上这个注解
@Configuration
public class SqlSessionFactoryConfiguration 

    @Autowired
    public DataSource dataSource;

    private static String mybatisConfigFile;
    //mybatis-config.xml配置文件的路径
    @Value("$mybatis_config_file")
    public void setMybatisConfigFile(String mybatisConfigFile) 
        SqlSessionFactoryConfiguration.mybatisConfigFile = mybatisConfigFile;
    

    private static String mapperPath;
    //mybatis mapper文件所在路径
    @Value("$mapper_path")
    public void setMapperPath(String mapperPath) 
        SqlSessionFactoryConfiguration.mapperPath = mapperPath;
    

    //实体类所在的package
    @Value("$type_alias_package")
    private String typeAliasPackage;

    /**
     * 创建sqlSessionFactoryBean 实例  并且设置configtion  设置mapper映射路径
     * <p>
     * 设置dataSource数据源
     */
    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException 
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //设置mybatis configuration扫描路径
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(mybatisConfigFile));
        //添加mapper扫描路径
        PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
        String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + mapperPath;
        sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources(packageSearchPath));
        //设置DataSource
        sqlSessionFactoryBean.setDataSource(dataSource);
        //设置typeAlias包扫描路径
        sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage);

        return sqlSessionFactoryBean;
    

其实上述的相关配置就类似spring-dao.xml里面的

    <!-- 3.配置SqlSessionFactory对象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <!-- 扫描entity包 使用别名 -->
        <property name="typeAliasesPackage" value="com.imooc.myo2o.entity" />
        <!-- 扫描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>

测试Dao

第一步

我们需要创建一个数据库cetest.并且创建一个数据表tb_area
建表语句(自行加入几条数据即可)

DROP TABLE IF EXISTS `tb_area`;

CREATE TABLE `tb_area` (
  `area_id` int(5) NOT NULL AUTO_INCREMENT,
  `area_name` varchar(200) NOT NULL,
  `area_desc` varchar(1000) DEFAULT NULL,
  `priority` int(2) NOT NULL DEFAULT '0',
  `create_time` datetime DEFAULT NULL,
  `last_edit_time` datetime DEFAULT NULL,
  PRIMARY KEY (`area_id`),
  UNIQUE KEY `UK_AREA` (`area_name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

创建Area实体类:

public class Area 
    private Long areaId;
    private String areaName;
    private String areaDesc;
    private Integer priority;
    private Date createTime;
    private Date lastEditTime;

    //自行添加getter/setter方法

创建AreaDao(包名是com.ruolan.springtest.dao)

public interface AreaDao 
 /**
     * 列出地域列表
     *
     * @return
     */
    List<Area> queryArea();

创建AreaDao

<?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.ruolan.springtest.dao.AreaDao">
    <select id="queryArea" resultType="com.ruolan.springtest.entity.Area">
        SELECT
        area_id,
        area_name,
        area_desc,
        priority,
        create_time,
        last_edit_time
        FROM
        tb_area
        ORDER BY
        priority DESC
    </select>
</mapper>

创建测试类

//测试类加入如下的两个注解
@RunWith(SpringRunner.class)
@SpringBootTest
public class AreaDaoTest 

    @Autowired
    private AreaDao areaDao;

    @Test
    public void testQueryArea() throws Exception 
        List<Area> areaList = areaDao.queryArea();
        System.out.println("查询出来的数据公有:"+areaList.size() + "条");
    


运行testQueryArea()方法,如果配置成功则会显示如下的截图结果。

写在结尾

至此,类似spring-dao的相关配置已经完事,接下来就需要配置service的相关了,那就期待下一篇吧。

参考文章

以上是关于Intellij IDEA 搭建Spring Boot项目spring-dao的相关配置的主要内容,如果未能解决你的问题,请参考以下文章

Intellij IDEA 搭建Spring Boot项目配置事务和Redis缓存

使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

项目笔记: 使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理

IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理