IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot+MyBatis -> 正文阅读

[Java知识库]SpringBoot+MyBatis

1.添加JDBC和连接池和MyBatis依赖

<!-- MySQL:Begin -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.25</version>
		</dependency>
		<!-- MySQL:End -->
		
		<!-- mybatis:Begin -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.0</version>
		</dependency>
		<!-- mybatis:End -->
		<!-- BoneCP连接池(JDBC):Begin -->
		<dependency>
			<groupId>com.jolbox</groupId>
			<artifactId>bonecp-spring</artifactId>
			<version>0.8.0.RELEASE</version>
		</dependency>
		<!-- BoneCP连接池(JDBC):End -->

2.写配置文件,配置到主程序中

配置文件:

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

在这里插入图片描述
主程序

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; // 每个分区最小的连接数

	/**
	 * 配置数据源
	 * 
	 * @return
	 */
	@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<User> selectAll();
}

`

5.创建mappers包

在resources下创建mappers包,创建xml文件,注意名字一定要和mapper内的一致,要不然映射不到

在这里插入图片描述

<?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="demo.boot.mapper.UserMapper">
	<select id="selectAll" resultType="User">
		select * from t_user
	</select>
</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/*.xml";

}

6.2创建MapperScannerConfig类

package demo.boot.config;

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 保证在MybatisConfig类实例化后才实例化此方法
 */
@Configuration
@AutoConfigureAfter(MyBatisConfig.class)
public class MapperScannerConfig {
	
    /**
     * mapper接口的扫描器
     * 
     * @return
     */
    @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 {
	
    /**
     * ConditionalOnMissingBean当容器里没有指定的Bean的情况下创建该对象
     */
    @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 测试

在这里插入图片描述

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:06:28  更:2021-09-29 10:09:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:15:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码