springboot+mybatis手动配置数据源

1.数据源配置 application.properties

#datasource
spring.datasource.name = test
spring.datasource.url = jdbc:mysql://192.168.0.79:3306/hyn_profile?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = hyn12345
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.filters = stat
spring.datasource.maxActive = 20
spring.datasource.initialSize = 1
spring.datasource.maxWait = 60000
spring.datasource.minIdle = 1
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.minEvictableIdleTimeMillis = 300000
spring.datasource.validationQuery = SELECT 1 FROM DUAL
spring.datasource.testWhileIdle = true
spring.datasource.testOnBorrow = false
spring.datasource.testOnReturn = false
spring.datasource.poolPreparedStatements = true
spring.datasource.maxOpenPreparedStatements = 20

2.druid数据库连接池配置

@Configuration
public class DruidConfig {
    private Logger logger = Logger.getLogger(DruidConfig.class.getName());

    @Value("${spring.datasource.url}")
    private String dbUrl;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;

    @Value("${spring.datasource.initialSize}")
    private int initialSize;

    @Value("${spring.datasource.minIdle}")
    private int minIdle;

    @Value("${spring.datasource.maxActive}")
    private int maxActive;

    @Value("${spring.datasource.maxWait}")
    private int maxWait;

    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.minEvictableIdleTimeMillis}")
    private int minEvictableIdleTimeMillis;

    @Value("${spring.datasource.validationQuery}")
    private String validationQuery;

    @Value("${spring.datasource.testWhileIdle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.testOnBorrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.testOnReturn}")
    private boolean testOnReturn;

    @Value("${spring.datasource.poolPreparedStatements}")
    private boolean poolPreparedStatements;

    @Value("${spring.datasource.filters}")
    private String filters;

    @Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean reg = new ServletRegistrationBean();
        reg.setServlet(new StatViewServlet());
        reg.addUrlMappings("/druid/*");
        reg.addInitParameter("loginUsername", "druid");
        reg.addInitParameter("loginPassword", "druid");
        return reg;
    }

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        filterRegistrationBean.addInitParameter("profileEnable", "true");
        filterRegistrationBean.addInitParameter("principalCookieName", "USER_COOKIE");
        filterRegistrationBean.addInitParameter("principalSessionName", "USER_SESSION");
        return filterRegistrationBean;
    }

    @Bean
    @Primary
    public DataSource druidDataSource() {
        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(this.dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {
            logger.error("druid configuration initialization filter", e);
        }
        return datasource;
    }
}

3.mybatis的sessionfactory和mapperscanner配置

@Configuration
@EnableTransactionManagement
public class SessionFactoryConfig implements TransactionManagementConfigurer {

    /** * mybatis 配置路径 */
    private static String MYBATIS_CONFIG = "mybatis-config.xml";
    @Autowired
    private DataSource dataSource;

    private String typeAliasPackage = "com.pulan.model";

    /**
     * 创建sqlSessionFactoryBean 实例 并且设置configtion 如驼峰命名.等等 设置mapper 映射路径
     * 设置datasource数据源
     *
     * @return
     * @throws Exception
     */
    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactoryBean createSqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        /** 设置mybatis configuration 扫描路径 */
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(MYBATIS_CONFIG));
        /** 设置datasource */
        sqlSessionFactoryBean.setDataSource(dataSource);
        /** 设置typeAlias 包扫描路径 */
        sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage);
        //添加XML目录
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:Mapper/*.xml"));
        return sqlSessionFactoryBean;
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

    @Bean
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return new DataSourceTransactionManager(dataSource);
    }

}


@Configuration
//TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
@AutoConfigureAfter(SessionFactoryConfig.class)
public class MyBatisMapperScannerConfig {
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        mapperScannerConfigurer.setBasePackage("com.pulan.Dao");
        return mapperScannerConfigurer;
    }
}


4.项目结构



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SpringBoot是一个基于Spring框架的快速开发平台,它提供了诸如自动化配置、依赖管理、监控等快速开发功能,使得开发人员可以更加专注于业务逻辑的实现。 MyBatis是一个持久层框架,它通过XML或注解方式,将Java对象与SQL语句进行映射,实现了SQL和Java代码的解耦,简化了SQL语句的书写,提高了开发效率。 Thymeleaf是一种模板引擎,它可以与SpringBoot无缝集成,用于将数据渲染到HTML页面上。通过Thymeleaf的模板标签,我们可以将后端数据与HTML页面进行绑定,实现动态页面的展示。 HTML是一种标记语言,用于编写Web页面,它是构建Web页面的基础语言,我们可以通过HTML实现网页的布局、样式和交互效果。 综上所述,SpringBoot+MyBatis+Thymeleaf+HTML可以实现一个基于MVC架构的Web应用。其SpringBoot提供了快速开发的功能,MyBatis实现了数据库和业务逻辑之间的交互,Thymeleaf将数据和HTML页面进行绑定,实现了动态页面的展示,而HTML是构建Web页面的基础语言。这样,开发人员可以快速完成Web应用的开发,从而实现快速迭代和升级。 ### 回答2: Spring Boot 是一个用于创建独立的、基于 Spring 的应用程序的框架,MyBatis 是一种持久化框架,可以简化数据库操作,而 Thymeleaf 是一个用于 Web 和独立环境的现代服务器端 Java 模板引擎。 结合使用 Spring Boot、MyBatis 和 Thymeleaf,你可以更加轻松地开发 Web 应用程序。Spring Boot 可以帮助你快速创建基于 Spring 的应用程序,不需要进行大量的手动配置MyBatis 还可以启动一个数据库的连接,使开发人员可以轻松地与数据库进行交互。而 Thymeleaf 则可以让你更轻松地创建并管理应用程序的前端部分。 具体地,你可以使用 Spring Boot 来开发 Web 应用程序,可以使用 MyBatis 来实现数据访问,而 Thymeleaf 则可以帮助你创建和管理用户界面(HTML)。Spring Boot 可以在 Web 应用程序作为框架运行,而 MyBatis 可以让你轻松地与数据库进行交互,而不需要编写许多样板代码。最后,Thymeleaf 可以让你轻松地创建和管理 HTML 网页。 总之,Spring Boot、MyBatis 和 Thymeleaf 是三个非常流行的 Web 开发框架,可以帮助你更加快速地开发 Web 应用程序。无论你是初学者还是经验丰富的开发人员,这些框架都可以帮助你快速开发高品质的应用程序。 ### 回答3: Spring Boot 是一个基于 Spring 框架的快速开发框架,具有开箱即用的特点,可以降低开发者的工作量。MyBatis 是一种持久层框架,可以将 SQL 语句分离出来,使得代码更具可读性和可维护性。Thymeleaf 是一种模板引擎,可以在 HTML 页面使用,使得前端开发人员也可以参与到后台代码的编写Spring Boot 可以与 MyBatis 集成,使用 MyBatis-Spring 来管理数据源和事务,并通过注解的方式进行 SQL 语句的编写和映射,使得开发更加简化。同时,Spring Boot 还内置了 Tomcat、Jetty、Undertow 等 Web 容器,可以快速编写 RESTful API。 Thymeleaf 与 Spring Boot 集成,可以使用 Thymeleaf-Spring 库,实现数据绑定、语言国际化、表单处理等功能。同时,Thymeleaf 还支持标准的 HTML5 标签,使得模板编写更加直观和简单。 综上所述,Spring Boot、MyBatis 和 Thymeleaf 都是现代化的开发框架和工具,可以快速构建高效的 Web 应用。它们的优秀特性和丰富的生态系统,极大地提升了开发效率和代码质量,是现代 Web 开发人员不可或缺的利器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值