MyBatis

使用SpringBoot整合ssm项目

末鹿安然 提交于 2020-04-22 05:29:51
SpringBoot是什么?   Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。 Spring Boot 现在已经成为 Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。成为 SpringBoot 全家桶,成为一把万能钥匙。 SpringBoot的特点   1.创建独立的 Spring 应用程序   2.嵌入的 Tomcat ,无需部署 WAR 文件   3.简化 Maven 配置   4.自动配置 Spring   5.提供生产就绪型功能,如指标,健康检查和外部配置 Spring 官方支持 SpringBoot 提供的项目框架生成页面 https://start.spring.io/ 在eclipse上创建springboot工程 ( jdk 版本必须 1.8 以上, springboot 基本上废除了 1.6 、 1.7) eclipse版本也有要求,版本过低,创建的工程会报错或者可以使用springboot低版本。也可以使用STS或IDEA,版本支持较好,下面演示用的是eclipse 简单的使用springboot整合ssm 1. 创建 Maven 工程,创建 simple project ,类型为 jar pom.xml 额外需要的 jar ,还得自己依赖,例如:

深入理解Spring的ImportSelector接口

纵饮孤独 提交于 2020-04-22 05:15:05
 ImportSelector接口是至spring中导入外部配置的核心接口,在SpringBoot的自动化配置和@EnableXXX(功能性注解)都有它的存在,关于SpringBoot的分析可以参考: 深入理解SpringBoot的自动装配 。 一、关于ImportSelector接口   package org.springframework.context.annotation; import org.springframework.core.type.AnnotationMetadata; /** * Interface to be implemented by types that determine which @{ @link Configuration} * class(es) should be imported based on a given selection criteria, usually one or more * annotation attributes. * * <p>An { @link ImportSelector} may implement any of the following * { @link org.springframework.beans.factory.Aware Aware} interfaces, and their

【springboot spring mybatis】看我怎么将springboot与spring整合mybatis与druid数据源

故事扮演 提交于 2020-04-22 05:10:47
概述 本文分别讲述了 spring 与 springboot 是怎么整合 mybatis 与 druid 数据源的?如果你只是想实现其中一种,那你就不要把他们的配置过程搞混了。 1、mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了 google code ,并且改名为MyBatis 。2013年11月迁移到 Github 。 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。 在国内以及韩国等地mybatis的普及率还是很高的。所以mybatis是绝对值得学习的。 2、druid Druid 提供了一个高效、功能强大、可扩展性好的数据库连接池,druid还有自己的数据访问监听系统,你的系统数据调用实时状况你都一通过druid来查看。 @[TOC] 壹:spring整合 在整合mybatis之前,我们首先需要明确的是,我们需要哪些文件分别拿来干嘛的。 1、pom

MyBatis关联查询简单示例

ⅰ亾dé卋堺 提交于 2020-04-22 04:54:05
首先在数据库bookstore中建立三张表,分别是BSuser,author,reader CREATE TABLE `author` ( `id` int(11) NOT NULL AUTO_INCREMENT, `realName` varchar(20) COLLATE utf8_bin DEFAULT NULL, `userID` int(11) DEFAULT NULL, `IDCard` varchar(20) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; CREATE TABLE `BSuser` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(20) COLLATE utf8_bin DEFAULT NULL, `password` varchar(20) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

数据库表中不建索引,在插入数据时,通过sql语句防止重复添加

泪湿孤枕 提交于 2020-04-22 04:38:02
sql 语句 INSERT IGNORE INTO table(aaa,bbb) SELECT '1111 ' , '2222 ' FROM DUAL WHERE NOT EXISTS ( SELECT id FROM table WHERE bbb = ' 2222 ' ) mybatis 中代码 < insert id ="addItemCharacteristic" parameterType ="com.orderalliance.entity.CharacteristicDTO" > <!-- INSERT INTO table (item_id,characteristic) VALUES(#{aaa,jdbcType=BIGINT},#{bbb,jdbcType=VARCHAR}) --> <!-- 此sql语句防止数据重复添加 --> INSERT IGNORE INTO table (aaa,bbb) SELECT #{111,jdbcType=BIGINT},#{222,jdbcType=VARCHAR} FROM DUAL WHERE NOT EXISTS( SELECT id FROM table WHERE bbb= #{bbb,jdbcType=VARCHAR} ) </ insert > 关键代码 INSERT IGNORE INTO 表名('字段')

Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源

二次信任 提交于 2020-04-22 04:08:41
本文是 Spring Boot 整合数据持久化方案的最后一篇,主要和大伙来聊聊 Spring Boot 整合 Jpa 多数据源问题。在 Spring Boot 整合JbdcTemplate 多数据源、Spring Boot 整合 MyBatis 多数据源以及 Spring Boot 整合 Jpa 多数据源这三个知识点中,整合 Jpa 多数据源算是最复杂的一种,也是很多人在配置时最容易出错的一种。本文大伙就跟着松哥的教程,一步一步整合 Jpa 多数据源。 工程创建 首先是创建一个 Spring Boot 工程,创建时添加基本的 Web、Jpa 以及 MySQL 依赖,如下: 创建完成后,添加 Druid 依赖,这里和前文的要求一样,要使用专为 Spring Boot 打造的 Druid,大伙可能发现了,如果整合多数据源一定要使用这个依赖,因为这个依赖中才有 DruidDataSourceBuilder,最后还要记得锁定数据库依赖的版本,因为可能大部分人用的还是 5.x 的 MySQL 而不是 8.x。完整依赖如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency

Spring Boot从入门到精通(五)多数据源配置实现及源码分析

耗尽温柔 提交于 2020-04-22 04:06:25
多数据源配置在项目软件中是比较常见的开发需求,Spring和Spring Boot中对此都有相应的解决方案可供大家参考。在Spring Boot中,如MyBatis、JdbcTemplate以及Jpa都可以配置多数据源。 本文在前一篇“Spring Boot从入门到精通(四)连接MySQL数据库(附源码)”文章中项目源码的基础上,来实现Spring Boot集成MyBatis和使用JdbcTemplate两种方式配置多数据源。 Spring Boot集成MyBatis和使用JdbcTemplate配置公共文件 1、配置数据源application.properties文件 假定有两个数据源来配置实现,分别对应的名字是oneDataSource和twoDataSource。 在application.properties文件中配置数据源信息如下: spring.datasource.one.url=jdbc:mysql: // 123.57.47.154:3306/springboot1 spring.datasource.one.username= root spring.datasource.one.password = wangyoodb spring.datasource.one.driverClassName = com.mysql.cj.jdbc.Driver

为啥总在凌晨上线,如何无损发布

瘦欲@ 提交于 2020-04-22 04:01:30
为什么很多公司升级系统,选择在晚上上线? 答 :美名其曰,晚上上线,对用户影响最小。 为什么会对用户产生影响? 答 :系统升级往往需要重启,重启的过程中,正在访问的用户会访问失败。 如果升级的是web-server: 如上图,重启ip1上的tomcat时,tomcat上或许有1000个http请求正在处理,这些请求就会失败。 如果升级的是service: 如上图,重启ip1的service时,service上或许有2000个请求正在处理,这些请求就会失败。 web-server升级能否不影响正在处理的请求? 答 :可以,需要nginx和web-server配合。 (1)给nginx发指令,将ip1上的流量切走 (2)nginx不会将新流量放给ip1,旧流量会很快处理完成 (3)旧流量完成后,升级web-server 此时,ip1上的web-server处于没有流量的状况,可以随便玩: 停服务备份 升级(粉色代表升级后的节点) 服务重启 测试工程师直连ip1进行验证 验证完毕 (4)给nginx发指令,将流量切回ip1 (5)流量切回ip1,单节点上线成功 一个节点升级完成之后,其他节点可以依次逐台升级。 service升级能否不影响正在处理的请求? 答 :可以,需要RPC-client和RPC-server配合。 (1)向准备升级的service节点ip1发送切流量指令

spring boot(四) 多数据源

故事扮演 提交于 2020-04-22 02:14:14
前言 前一篇中我们使用spring boot+mybatis创建了单一数据源,其中单一数据源不需要我们自己手动创建,spring boot自动配置在程序启动时会替我们创建好数据源。 准备工作 application.yml中配置connection的4个属性 spring: datasource: read: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.80.129:3306/test username: root password: 123456 write: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.80.129:3306/test username: root password: 123456    多数据源创建方法 1、多数据源主要是需要我们手动来创建DataSource、SqlSessionFactory、SqlSessionTemplate。这里我们基于同一个库来创建读写分离的数据源。这里两个方法的返回值都是javax.sql.DataSource。 @Configuration public class DataSourceConfig { @Primary @Bean(name=

2020最新Java 200+面试题(补充ThreadLocal 模块解析)

不羁岁月 提交于 2020-04-21 23:48:53
前言: 前部分.是ThreadLocal补充模块解析. 后部分.200+面试题内容. 1.ThreadLocal 是什么? ThreadLocal 是一个本地线程副本变量工具类。 主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,适用于各个线程不共享变量值的操作。 2.ThreadLocal 工作原理是什么? ThreadLocal 原理: 每个线程的内部都维护了一个 ThreadLocalMap,它是一个 Map(key,value)数据格式,key 是一个弱引用,也就是 ThreadLocal 本身,而 value 存的是线程变量的值。 也就是说 ThreadLocal 本身并不存储线程的变量值,它只是一个工具,用来维护线程内部的 Map,帮助存和取变量。 数据结构,如下图所示: 3.ThreadLocal 如何解决 Hash 冲突? 与 HashMap 不同,ThreadLocalMap 结构非常简单,没有 next 引用. 也就是说 ThreadLocalMap 中解决 Hash 冲突的方式并非链表的方式,而是采用线性探测的方式. 所谓线性探测,就是根据初始 key 的 hashcode 值确定元素在 table 数组中的位置,如果发现这个位置上已经被其他的 key 值占用