2.写配置文件,配置到主程序中mysql mysql-connector-java 8.0.25 org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 org.mybatis mybatis-spring 1.3.1 org.mybatis mybatis 3.5.0 com.jolbox bonecp-spring 0.8.0.RELEASE
配置文件:
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1/mybatis?characterEncoding=utf-8 jdbc.username=root jdbc.password=root jdbc.period_in_minutes=60 jdbc.max_age_in_minutes=30 jdbc.max_connections_per_partition=100 jdbc.min_connections_per_partition=5
主程序
package demo.boot;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.jolbox.bonecp.BoneCPDataSource;
@Configuration
@PropertySource(value = { "classpath:jdbc.properties" })
//@ComponentScan(basePackages = "org.personal.qin.springboot")
@SpringBootApplication
public class MainApplication {
@Value("${jdbc.driver}")
private String driverClassName; // 数据库驱动
@Value("${jdbc.url}")
private String url; // 相应驱动的jdbcUrl
@Value("${jdbc.username}")
private String username; // 数据库的用户名
@Value("${jdbc.password}")
private String password; // 数据库的密码
@Value("${jdbc.period_in_minutes}")
private int periodInMinutes; // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
@Value("${jdbc.max_age_in_minutes}")
private int maxAgeInMinutes; // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
@Value("${jdbc.max_connections_per_partition}")
private int maxConnectionsPerPartition; // 每个分区最大的连接数
@Value("${jdbc.min_connections_per_partition}")
private int minConnectionsPerPartition; // 每个分区最小的连接数
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
boneCPDataSource.setDriverClass(driverClassName);
boneCPDataSource.setJdbcUrl(url);
boneCPDataSource.setUsername(username);
boneCPDataSource.setPassword(password);
boneCPDataSource.setIdleConnectionTestPeriodInMinutes(periodInMinutes);
boneCPDataSource.setIdleMaxAgeInMinutes(maxAgeInMinutes);
boneCPDataSource.setMaxConnectionsPerPartition(maxConnectionsPerPartition);
boneCPDataSource.setMinConnectionsPerPartition(minConnectionsPerPartition);
return boneCPDataSource;
}
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
3.创建一个包mapper(dao)
4.创建接口
Mybatis是面向接口编程
package demo.boot.mapper;
import java.util.List;
import demo.boot.pojo.User;
public interface UserMapper {
public List selectAll();
}
`
5.创建mappers包在resources下创建mappers包,创建xml文件,注意名字一定要和mapper内的一致,要不然映射不到
6.创建Config包
创建的Mappers包下的文件SpringBoot程序并不知道,所以要创建一个config包来让SpringBoot程序识别mappers
6.1创建Cast类package demo.boot.config;
public class Cast {
//配置MyBatis
public static final String MYBATIS_ConFIG = "classpath:mybatis-config.xml";
public static final String PO_PACKAGE = "org.personal.qin.springboot.po";
public static final String MAPPER_PACKAGE = "org.personal.qin.springboot.mapper";
public static final String MAPPER_SCANNER = "classpath:mapper
@Configuration
@AutoConfigureAfter(MyBatisConfig.class)
public class MapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setbasePackage(Cast.MAPPER_PACKAGE);
return mapperScannerConfigurer;
}
}
6.3 创建MyBatisConfig类
package demo.boot.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
@Configuration
public class MyBatisConfig {
@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 设置数据源
sqlSessionFactoryBean.setDataSource(dataSource);
// 添加一行如下代码,解决setTypeAliasesPackage别名设置不起作用问题
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
//设置mybatis的主配置文件
ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
Resource mybatisConfigXml = resourceResolver.getResource(Cast.MYBATIS_CONFIG);
sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
// 设置别名包
sqlSessionFactoryBean.setTypeAliasesPackage(Cast.PO_PACKAGE);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources(Cast.MAPPER_SCANNER));
return sqlSessionFactoryBean.getObject();
}
}
这里只改Cast类中的内容
package demo.boot.config;
public class Cast {
//配置MyBatis
//mybatis-config.xml文件的路径(配置mybatis特有的增强功能)
public static final String MYBATIS_ConFIG = "classpath:mybatis-config.xml";
//配置实体的包路径
public static final String PO_PACKAGE = "demo.boot.pojo";
//配置DAO(Mapper)接口的包路径
public static final String MAPPER_PACKAGE = "demo.boot.mapper";
//配置DAO(Mapper)xml文件的扫描路径
public static final String MAPPER_SCANNER = "classpath:mappers/*.xml";
}
6.4 测试



