mybatis与spring整合中十四用的jar包(注意jar包使用的版本)与配置类,以及简单的测试实例

发布时间 2023-09-07 15:03:18作者: 努力是一种常态

2023-09-07

jdbc.properties

注意里面的url中此时里面书写的是&而不是转移之后的,以及要注意数据库的名称是否存在

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
jdbc.username=root
jdbc.password=123456

config包下的类

SpringConfig(Spring的配置类)

SpringConfig包下的@ComponentScan注解扫描的是加入IOC容器中的bean对象

@PropertySource注解是读取jdbc.properties中的数据
@Import注解是将其他配置类中的文件导入到Spring的配置类中

package com.hh.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-07 14:10:51
 */
@Configuration
@ComponentScan({"com.hh.dao","com.hh.service"})
@PropertySource("jdbc.properties")
@Import({JDBCconfig.class,MybatisConfig.class})
public class SpringConfig {
}

 JDBCconfig

package com.hh.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-07 14:21:52
 */

public class JDBCconfig {


    @Value("${jdbc.driverClassName}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;


    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return ds;
    }
}

MybatisConfig

这个是mybatis的配置类,它的包扫描主要扫描的是mapper映射文件的,就是写sql语句的包

package com.hh.config;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.SQL;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import java.io.InputStream;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-07 14:18:59
 */
public class MybatisConfig {

    @Bean
    public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
        ssfb.setTypeAliasesPackage("com.hh.domain");
        ssfb.setDataSource(dataSource);
        return ssfb;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.hh.dao");
        return msc;
    }
}

 dao与service包就不写了

测试

测试的时候,就是创建一盒IOC容器,从IOC容器中拿到bean对象,执行业务就行

import com.hh.config.SpringConfig;
import com.hh.domain.Account;
import com.hh.service.AccountService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.List;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-07 14:35:02
 */
public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        AccountService accountService = context.getBean(AccountService.class);
        List<Account> accounts = accountService.selectAll();
        System.out.println("accounts = " + accounts);
    }
}