diff --git a/pictures/spring-druid-mybatis-annotation.png b/pictures/spring-druid-mybatis-annotation.png new file mode 100644 index 0000000..7cd1c10 Binary files /dev/null and b/pictures/spring-druid-mybatis-annotation.png differ diff --git a/pictures/spring-druid-mybatis.png b/pictures/spring-druid-mybatis.png new file mode 100644 index 0000000..d99b430 Binary files /dev/null and b/pictures/spring-druid-mybatis.png differ diff --git a/pictures/spring-jdbc-annotation.png b/pictures/spring-jdbc-annotation.png new file mode 100644 index 0000000..a291c22 Binary files /dev/null and b/pictures/spring-jdbc-annotation.png differ diff --git a/pictures/spring-jdbc.png b/pictures/spring-jdbc.png new file mode 100644 index 0000000..d8d23ea Binary files /dev/null and b/pictures/spring-jdbc.png differ diff --git a/pictures/spring-mybatis-annotation.png b/pictures/spring-mybatis-annotation.png new file mode 100644 index 0000000..3b1119e Binary files /dev/null and b/pictures/spring-mybatis-annotation.png differ diff --git a/pictures/spring-mybatis.png b/pictures/spring-mybatis.png new file mode 100644 index 0000000..eb2f781 Binary files /dev/null and b/pictures/spring-mybatis.png differ diff --git a/spring/spring-aop-annotation/README.md b/spring/spring-aop-annotation/README.md index 43778a6..6b045a7 100644 --- a/spring/spring-aop-annotation/README.md +++ b/spring/spring-aop-annotation/README.md @@ -8,7 +8,7 @@ 2. 自定义切面位于advice下,其中CustomAdvice是标准的自定义切面,FirstAdvice和SecondAdvice用于测试多切面共同作用于同一个被切入点时的执行顺序; 3. OrderService是待切入方法。 -![spring+redis项目目录结构](D:\spring-samples-for-all\pictures\spring-aop-annotation.png) +
@@ -166,4 +166,4 @@ public class AopTest { - 优先级高的切面在切入方法前执行的通知(before)会优先执行,但是位于方法后执行的通知(after,afterReturning)反而会延后执行,类似于同心圆原理。 - ![aop执行顺序](D:\spring-samples-for-all\pictures\aop执行顺序.png) \ No newline at end of file +
\ No newline at end of file diff --git a/spring/spring-aop/README.md b/spring/spring-aop/README.md index 3680b9c..b3e2364 100644 --- a/spring/spring-aop/README.md +++ b/spring/spring-aop/README.md @@ -6,7 +6,7 @@ 切面配置位于resources下的aop.xml文件,其中CustomAdvice是自定义切面类,OrderService是待切入的方法。 -![spring+redis项目目录结构](D:\spring-samples-for-all\pictures\spring-aop.png) +
diff --git a/spring/spring-druid-mybatis-annotation/README.md b/spring/spring-druid-mybatis-annotation/README.md index b69852a..bbaf7a8 100644 --- a/spring/spring-druid-mybatis-annotation/README.md +++ b/spring/spring-druid-mybatis-annotation/README.md @@ -1,112 +1,48 @@ -# spring +druid+ mybatis(注解配置方式) +# spring +druid+ mybatis(注解方式) -1、创建标准web maven工程,导入依赖 +### 项目目录结构 + +
+ +#### 1、创建maven工程,除了Spring基本依赖外,还需要导入mybatis和druid的相关依赖 ```xml - - - 4.0.0 - - com.heibaiying + + + org.springframework spring-jdbc - 1.0-SNAPSHOT - - 5.1.3.RELEASE - - - - - - org.springframework - spring-context - ${spring-base-version} - - - org.springframework - spring-beans - ${spring-base-version} - - - org.springframework - spring-core - ${spring-base-version} - - - org.springframework - spring-web - ${spring-base-version} - - - org.springframework - spring-webmvc - ${spring-base-version} - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - org.projectlombok - lombok - 1.18.4 - provided - - - - org.springframework - spring-jdbc - ${spring-base-version} - - - mysql - mysql-connector-java - 8.0.13 - - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring-base-version} - test - - - com.oracle - ojdbc6 - 11.2.0.3.0 - - - - org.mybatis - mybatis-spring - 1.3.2 - - - org.mybatis - mybatis - 3.4.6 - - - - com.alibaba - druid - 1.1.12 - - - - + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + + + org.mybatis + mybatis-spring + 1.3.2 + + + org.mybatis + mybatis + 3.4.6 + + + + com.alibaba + druid + 1.1.12 + ``` -2、新建 DispatcherServletInitializer.java继承自AbstractAnnotationConfigDispatcherServletInitializer,等价于我们在web.xml中配置的前端控制器 +#### 2、新建 DispatcherServletInitializer.java继承自AbstractAnnotationConfigDispatcherServletInitializer,等价于我们在web.xml中配置的前端控制器 ```java public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @@ -125,18 +61,11 @@ public class DispatcherServletInitializer extends AbstractAnnotationConfigDispat } ``` -3、基础servlet 3.0的支持,可以采用注解的方式注册druid的servlet和filter +#### 3、基础servlet 3.0的支持,可以采用注解的方式注册druid的servlet和filter -​ 注:关于servlet 注解支持可以查看[Servlet 规范文档](https://github.com/heibaiying/spring-samples-for-all/blob/master/referenced%20documents/Servlet3.1%E8%A7%84%E8%8C%83%EF%BC%88%E6%9C%80%E7%BB%88%E7%89%88%EF%BC%89.pdf)中**8.1小节 注解和可插拔性** +​ 注:关于servlet 更多注解支持可以查看[Servlet 规范文档](https://github.com/heibaiying/spring-samples-for-all/blob/master/referenced%20documents/Servlet3.1%E8%A7%84%E8%8C%83%EF%BC%88%E6%9C%80%E7%BB%88%E7%89%88%EF%BC%89.pdf)中**8.1小节 注解和可插拔性** ```java -package com.heibaiying.config.druid; - -import com.alibaba.druid.support.http.StatViewServlet; - -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebServlet; - /** * @author : heibaiying * @description : 配置监控页面用户名密码 @@ -153,12 +82,6 @@ public class DruidStatViewServlet extends StatViewServlet { ``` ```java -package com.heibaiying.config.druid; - -import com.alibaba.druid.support.http.WebStatFilter; - -import javax.servlet.annotation.WebFilter; -import javax.servlet.annotation.WebInitParam; /** * @author : heibaiying @@ -175,7 +98,7 @@ public class DruidStatFilter extends WebStatFilter { ``` -4、在resources文件夹下新建数据库配置文件mysql.properties、oracle.properties +#### 4、在resources文件夹下新建数据库配置文件mysql.properties、oracle.properties ```properties # mysql 数据库配置 @@ -193,21 +116,9 @@ oracle.username=用户名 oracle.password=密码 ``` -5、在新建数据库配置映射类DataSourceConfig.java +#### 5、在新建数据库配置映射类DataSourceConfig.java ```java -package com.heibaiying.config; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -/** - * @author : heibaiying - * @description : - */ - @Configuration @PropertySource(value = "classpath:mysql.properties") @Data @@ -226,30 +137,9 @@ public class DataSourceConfig { ``` -6、新建ServletConfig.java,进行数据库相关配置 +#### 6、新建ServletConfig.java,进行数据库相关配置 ```java -package com.heibaiying.config; - -import com.alibaba.druid.pool.DruidDataSource; -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.mapper.MapperScannerConfigurer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.io.IOException; -import java.sql.SQLException; - -; - - /** * @author : heibaiying */ @@ -351,7 +241,7 @@ public class ServletConfig implements WebMvcConfigurer { ``` -7、新建mybtais 配置文件 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) +#### 7、新建mybtais 配置文件,按需要进行额外参数配置, 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) ```xml @@ -374,7 +264,7 @@ public class ServletConfig implements WebMvcConfigurer { ``` -8、新建查询接口及其对应的mapper文件 +#### 8、新建查询接口及其对应的mapper文件 ```java public interface MysqlDao { @@ -421,25 +311,9 @@ public interface OracleDao { ``` -9.新建测试controller进行测试 +#### 9.新建测试controller进行测试 ```java -package com.heibaiying.controller; - -import com.heibaiying.bean.Relation; -import com.heibaiying.dao.MysqlDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RestController public class MysqlController { @@ -455,19 +329,6 @@ public class MysqlController { ``` ```java -package com.heibaiying.controller; - -import com.heibaiying.dao.OracleDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author : heibaiying - * @description : - */ - @RestController public class OracleController { @@ -482,7 +343,7 @@ public class OracleController { ``` -10、druid 监控页面访问地址http://localhost:8080/druid/index.html +#### 10、druid 监控页面访问地址http://localhost:8080/druid/index.html ![druid控制台](https://github.com/heibaiying/spring-samples-for-all/blob/master/pictures/druid%E6%8E%A7%E5%88%B6%E5%8F%B0.png) diff --git a/spring/spring-druid-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java b/spring/spring-druid-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java index 51dd508..1c73d88 100644 --- a/spring/spring-druid-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java +++ b/spring/spring-druid-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java @@ -15,12 +15,6 @@ import org.springframework.context.annotation.PropertySource; @Data public class DataSourceConfig { - /** - * 感觉这种注入的方式并不够好 - * 没有spring-boot中使用@ConfigurationProperties(prefix = "config")指定前缀注入的方式优雅 - */ - @Value("${mysql.driverClassName}") - private String driverClassName; @Value("${mysql.url}") private String url; @Value("${mysql.username}") diff --git a/spring/spring-druid-mybatis-annotation/src/main/resources/mysql.properties b/spring/spring-druid-mybatis-annotation/src/main/resources/mysql.properties index e860927..973f6a0 100644 --- a/spring/spring-druid-mybatis-annotation/src/main/resources/mysql.properties +++ b/spring/spring-druid-mybatis-annotation/src/main/resources/mysql.properties @@ -1,4 +1,4 @@ # mysql ݿ -mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false mysql.username=root mysql.password=root diff --git a/spring/spring-druid-mybatis/README.md b/spring/spring-druid-mybatis/README.md index a7a243b..0d60525 100644 --- a/spring/spring-druid-mybatis/README.md +++ b/spring/spring-druid-mybatis/README.md @@ -1,112 +1,48 @@ # spring +druid+ mybatis(xml配置方式) -#### 1、创建标准web maven工程,导入依赖 +### 项目目录结构 + +
+ +#### 1、创建maven工程,除了Spring基本依赖外,还需要导入mybatis和druid的相关依赖 ```xml - - - 4.0.0 - - com.heibaiying + + + org.springframework spring-jdbc - 1.0-SNAPSHOT - - 5.1.3.RELEASE - - - - - - org.springframework - spring-context - ${spring-base-version} - - - org.springframework - spring-beans - ${spring-base-version} - - - org.springframework - spring-core - ${spring-base-version} - - - org.springframework - spring-web - ${spring-base-version} - - - org.springframework - spring-webmvc - ${spring-base-version} - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - org.projectlombok - lombok - 1.18.4 - provided - - - - org.springframework - spring-jdbc - ${spring-base-version} - - - mysql - mysql-connector-java - 8.0.13 - - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring-base-version} - test - - - com.oracle - ojdbc6 - 11.2.0.3.0 - - - - org.mybatis - mybatis-spring - 1.3.2 - - - org.mybatis - mybatis - 3.4.6 - - - - com.alibaba - druid - 1.1.12 - - - - + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + + + org.mybatis + mybatis-spring + 1.3.2 + + + org.mybatis + mybatis + 3.4.6 + + + + com.alibaba + druid + 1.1.12 + ``` -#### 2、在web.xml 进行如下配置 +#### 2、在web.xml 中配置spring前端控制器、druid监控台servlet和filter ```xml @@ -302,7 +238,7 @@ oracle.password=密码 ``` -#### 5、新建mybtais 配置文件 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) +#### 5、新建mybtais 配置文件,按需要进行额外配置,更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) ```xml diff --git a/spring/spring-druid-mybatis/src/main/resources/jdbc.properties b/spring/spring-druid-mybatis/src/main/resources/jdbc.properties index e633488..525186b 100644 --- a/spring/spring-druid-mybatis/src/main/resources/jdbc.properties +++ b/spring/spring-druid-mybatis/src/main/resources/jdbc.properties @@ -1,5 +1,5 @@ # mysql ݿ -mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false mysql.username=root mysql.password=root diff --git a/spring/spring-dubbo-annotation/README.md b/spring/spring-dubbo-annotation/README.md index 75b8e75..1a09d19 100644 --- a/spring/spring-dubbo-annotation/README.md +++ b/spring/spring-dubbo-annotation/README.md @@ -10,7 +10,7 @@ 1.2 本项目dubbo的搭建采用zookeeper作为注册中心, 关于zookeeper的安装和基本操作可以参见我的手记[Zookeeper 基础命令与Java客户端](https://github.com/heibaiying/LearningNotes/blob/master/notes/%E4%B8%AD%E9%97%B4%E4%BB%B6/ZooKeeper/ZooKeeper%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA%E4%B8%8EJava%E5%AE%A2%E6%88%B7%E7%AB%AF.md) -![spring-scheduling](D:\spring-samples-for-all\pictures\spring-dubbo.png) +
@@ -51,11 +51,11 @@ - api 下为公共的调用接口; - bean 下为公共的实体类。 -![spring-scheduling](D:\spring-samples-for-all\pictures\dubbo-ano-common.png) +
## 四、 服务提供者(dubbo-ano-provider) -![spring-scheduling](D:\spring-samples-for-all\pictures\dubbo-ano-provider.png) +
#### 4.1 提供方配置 @@ -147,7 +147,7 @@ public class ProductService implements IProductService { ## 五、服务消费者(dubbo-ano-consumer) -![spring-scheduling](D:\spring-samples-for-all\pictures\dubbo-ano-consumer.png) +
#### 1.消费方的配置 diff --git a/spring/spring-dubbo/README.md b/spring/spring-dubbo/README.md index bc4bc80..732f063 100644 --- a/spring/spring-dubbo/README.md +++ b/spring/spring-dubbo/README.md @@ -10,7 +10,7 @@ 1.2 本项目dubbo的搭建采用zookeeper作为注册中心, 关于zookeeper的安装和基本操作可以参见我的手记[Zookeeper 基础命令与Java客户端](https://github.com/heibaiying/LearningNotes/blob/master/notes/%E4%B8%AD%E9%97%B4%E4%BB%B6/ZooKeeper/ZooKeeper%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA%E4%B8%8EJava%E5%AE%A2%E6%88%B7%E7%AB%AF.md) -![spring-scheduling](D:\spring-samples-for-all\pictures\spring-dubbo.png) +
@@ -51,11 +51,11 @@ - api 下为公共的调用接口; - bean 下为公共的实体类。 -![spring-scheduling](D:\spring-samples-for-all\pictures\dubbo-common.png) +
## 四、 服务提供者(dubbo-provider) -![spring-scheduling](D:\spring-samples-for-all\pictures\dubbo-provider.png) +
#### 4.1 productService是服务的提供者( 商品数据用模拟数据展示) @@ -124,7 +124,7 @@ public class ProductService implements IProductService { ## 五、服务消费者(dubbo-consumer) -![spring-scheduling](D:\spring-samples-for-all\pictures\dubbo-consumer.png) +
#### 1.在dubbo.xml调用远程的服务 diff --git a/spring/spring-email-annotation/README.md b/spring/spring-email-annotation/README.md index 2e0cfc9..cf0550e 100644 --- a/spring/spring-email-annotation/README.md +++ b/spring/spring-email-annotation/README.md @@ -10,7 +10,7 @@ -![spring-email](D:\spring-samples-for-all\pictures\spring-email-annotation.png) +
diff --git a/spring/spring-email/README.md b/spring/spring-email/README.md index 1eff4b8..fc51875 100644 --- a/spring/spring-email/README.md +++ b/spring/spring-email/README.md @@ -10,7 +10,7 @@ -![spring-email](D:\spring-samples-for-all\pictures\spring-email.png) +
diff --git a/spring/spring-jdbc-annotation/README.md b/spring/spring-jdbc-annotation/README.md index e13afda..e53f9e5 100644 --- a/spring/spring-jdbc-annotation/README.md +++ b/spring/spring-jdbc-annotation/README.md @@ -1,114 +1,41 @@ -# spring 整合 jdbc template(注解配置方式) +# spring 整合 jdbc template(注解方式) -1、创建标准web maven工程,导入依赖 +## 1.说明 + +#### 1.1 项目目录结构 + +1. 数据源配置位于config目录下的DatabaseConfig.java和DataSourceConfig.java +2. 项目以单元测试的方法进行测试 + +
+ + + +#### 1.2 项目依赖 ```xml - - - 4.0.0 - - com.heibaiying + + + org.springframework spring-jdbc - 1.0-SNAPSHOT - - 5.1.3.RELEASE - - - - - - org.springframework - spring-context - ${spring-base-version} - - - org.springframework - spring-beans - ${spring-base-version} - - - org.springframework - spring-core - ${spring-base-version} - - - org.springframework - spring-web - ${spring-base-version} - - - org.springframework - spring-webmvc - ${spring-base-version} - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - org.projectlombok - lombok - 1.18.4 - provided - - - - org.springframework - spring-jdbc - ${spring-base-version} - - - mysql - mysql-connector-java - 8.0.13 - - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring-base-version} - test - - - com.oracle - ojdbc6 - 11.2.0.3.0 - - - - + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + ``` -2、新建 DispatcherServletInitializer.java继承自AbstractAnnotationConfigDispatcherServletInitializer,等价于我们在web.xml中配置的前端控制器 +## 二、spring 整合 jdbc template -```java -public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { - - protected Class[] getRootConfigClasses() { - return new Class[0]; - } - - protected Class[] getServletConfigClasses() { - return new Class[]{ServletConfig.class}; - } - - protected String[] getServletMappings() { - return new String[]{"/"}; - } -} -``` - -3、在resources文件夹下新建数据库配置文件mysql.properties、oracle.properties +#### 2.1 在resources文件夹下新建数据库配置文件mysql.properties、oracle.properties及其映射类 ```properties # mysql 数据库配置 @@ -126,21 +53,7 @@ oracle.username=用户名 oracle.password=密码 ``` -4、在新建数据库配置映射类DataSourceConfig.java - ```java -package com.heibaiying.config; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -/** - * @author : heibaiying - * @description : - */ - @Configuration @PropertySource(value = "classpath:mysql.properties") @Data @@ -159,27 +72,13 @@ public class DataSourceConfig { ``` -5、新建ServletConfig.java,进行数据库相关配置 +#### 2.2 新建数据库配置类DatabaseConfig.java ```java -package com.heibaiying.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.jdbc.datasource.DriverManagerDataSource; -import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * @author : heibaiying - */ @Configuration @EnableTransactionManagement // 开启声明式事务处理 等价于xml中 @ComponentScan(basePackages = {"com.heibaiying.*"}) -public class ServletConfig implements WebMvcConfigurer { +public class DatabaseConfig { /** * 配置数据源 @@ -194,6 +93,7 @@ public class ServletConfig implements WebMvcConfigurer { return dataSource; } + /** * 配置jdbcTemplate * @param dataSource 这个参数的名称需要保持和上面方法名一致 才能自动注入,因为 @@ -217,36 +117,12 @@ public class ServletConfig implements WebMvcConfigurer { } } + ``` -6、新建查询接口及其实现类,这里我查询的表是mysql和oracle中的字典表 +#### 2.3 新建查询接口及其实现类,这里我查询的表是mysql和oracle中的字典表 ```java -public interface MysqlDao { - - List get(); -} -``` - -```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Relation; -import com.heibaiying.dao.impl.MysqlDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Repository; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @Repository public class MysqlDaoImpl implements MysqlDao { @@ -274,42 +150,9 @@ public class MysqlDaoImpl implements MysqlDao { ``` -```mysql -package com.heibaiying.dao.impl; -import com.heibaiying.bean.Flow; -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ -public interface OracleDao { - - List get(); -} - -``` ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Flow; -import com.heibaiying.dao.impl.OracleDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Repository; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @Repository public class OracleDaoImpl implements OracleDao { @@ -338,30 +181,11 @@ public class OracleDaoImpl implements OracleDao { ``` -7、新建测试类进行测试 +#### 2.4 新建测试类进行测试 ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Relation; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; -import com.heibaiying.dao.impl.MysqlDao; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {ServletConfig.class}) public class MysqlDaoTest { @Autowired @@ -380,28 +204,8 @@ public class MysqlDaoTest { ``` ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Flow; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; -import com.heibaiying.dao.impl.OracleDao; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {ServletConfig.class}) public class OracleDaoTest { /*注入接口时: 如果接口有多个实现类 可以用这个指定具体的实现类*/ diff --git a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java index 51dd508..295ae2d 100644 --- a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java +++ b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java @@ -7,7 +7,6 @@ import org.springframework.context.annotation.PropertySource; /** * @author : heibaiying - * @description : */ @Configuration @@ -15,10 +14,6 @@ import org.springframework.context.annotation.PropertySource; @Data public class DataSourceConfig { - /** - * 感觉这种注入的方式并不够好 - * 没有spring-boot中使用@ConfigurationProperties(prefix = "config")指定前缀注入的方式优雅 - */ @Value("${mysql.driverClassName}") private String driverClassName; @Value("${mysql.url}") diff --git a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DatabaseConfig.java similarity index 93% rename from spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java rename to spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DatabaseConfig.java index 43face4..c6a3105 100644 --- a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/ServletConfig.java +++ b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DatabaseConfig.java @@ -7,7 +7,6 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * @author : heibaiying @@ -15,7 +14,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @EnableTransactionManagement // 开启声明式事务处理 等价于xml中 @ComponentScan(basePackages = {"com.heibaiying.*"}) -public class ServletConfig implements WebMvcConfigurer { +public class DatabaseConfig { /** * 配置数据源 diff --git a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java b/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java deleted file mode 100644 index 7ed14d2..0000000 --- a/spring/spring-jdbc-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.heibaiying.config; - -import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; - -/** - * @author : heibaiying - */ - -public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { - - protected Class[] getRootConfigClasses() { - return new Class[0]; - } - - protected Class[] getServletConfigClasses() { - return new Class[]{ServletConfig.class}; - } - - protected String[] getServletMappings() { - return new String[]{"/"}; - } -} diff --git a/spring/spring-jdbc-annotation/src/main/resources/mysql.properties b/spring/spring-jdbc-annotation/src/main/resources/mysql.properties index e8ab06b..27b2bdc 100644 --- a/spring/spring-jdbc-annotation/src/main/resources/mysql.properties +++ b/spring/spring-jdbc-annotation/src/main/resources/mysql.properties @@ -1,5 +1,5 @@ # mysql ݿ -mysql.driverClassName=com.mysql.jdbc.Driver -mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.driverClassName=com.mysql.cj.jdbc.Driver +mysql.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false mysql.username=root mysql.password=root diff --git a/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java b/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java index ef3b774..0423637 100644 --- a/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java +++ b/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java @@ -1,8 +1,7 @@ package com.heibaiying.dao; import com.heibaiying.bean.Relation; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; +import com.heibaiying.config.DatabaseConfig; import com.heibaiying.dao.impl.MysqlDao; import org.junit.Test; import org.junit.runner.RunWith; @@ -18,7 +17,7 @@ import java.util.List; */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {DatabaseConfig.class}) public class MysqlDaoTest { @Autowired diff --git a/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java b/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java index a4cd513..8d6cc4d 100644 --- a/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java +++ b/spring/spring-jdbc-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java @@ -1,8 +1,7 @@ package com.heibaiying.dao; import com.heibaiying.bean.Flow; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; +import com.heibaiying.config.DatabaseConfig; import com.heibaiying.dao.impl.OracleDao; import org.junit.Test; import org.junit.runner.RunWith; @@ -19,7 +18,7 @@ import java.util.List; */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {DatabaseConfig.class}) public class OracleDaoTest { /*注入接口时: 如果接口有多个实现类 可以用这个指定具体的实现类*/ diff --git a/spring/spring-jdbc/README.md b/spring/spring-jdbc/README.md index 9d92447..7017f78 100644 --- a/spring/spring-jdbc/README.md +++ b/spring/spring-jdbc/README.md @@ -1,124 +1,38 @@ # spring 整合 jdbc template(xml配置方式) -1、创建标准web maven工程,导入依赖 +## 一、说明 + +#### 1.1 项目结构 + +
+ +#### 1.2 项目依赖 ```xml - - - 4.0.0 - - com.heibaiying + + + org.springframework spring-jdbc - 1.0-SNAPSHOT - - 5.1.3.RELEASE - - - - - - org.springframework - spring-context - ${spring-base-version} - - - org.springframework - spring-beans - ${spring-base-version} - - - org.springframework - spring-core - ${spring-base-version} - - - org.springframework - spring-web - ${spring-base-version} - - - org.springframework - spring-webmvc - ${spring-base-version} - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - org.projectlombok - lombok - 1.18.4 - provided - - - - org.springframework - spring-jdbc - ${spring-base-version} - - - mysql - mysql-connector-java - 8.0.13 - - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring-base-version} - test - - - com.oracle - ojdbc6 - 11.2.0.3.0 - - - - + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + ``` -2、在web.xml 进行如下配置 -```xml - - - - - springMvc - org.springframework.web.servlet.DispatcherServlet - - contextConfigLocation - classpath:springApplication.xml - - 1 - +## 二、 spring 整合 jdbc template - - springMvc - / - - - -``` - -3、在resources文件夹下新建数据库配置文件jdbc.properties +#### 1、在resources文件夹下新建数据库配置文件jdbc.properties ```properties # mysql 数据库配置 @@ -134,7 +48,7 @@ oracle.username=用户名 oracle.password=密码 ``` -4、在resources文件夹下创建springApplication.xml 配置文件 +#### 2、配置Jdbc数据源并定义事务管理器 ```xml @@ -182,34 +96,9 @@ oracle.password=密码 ``` -5、新建查询接口及其实现类,这里我查询的表是mysql和oracle中的字典表 +#### 3、新建查询接口及其实现类,这里我查询的表是mysql和oracle中的字典表 ```java -public interface MysqlDao { - - List get(); -} -``` - -```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Relation; -import com.heibaiying.dao.impl.MysqlDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Repository; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @Repository public class MysqlDaoImpl implements MysqlDao { @@ -237,42 +126,7 @@ public class MysqlDaoImpl implements MysqlDao { ``` -```mysql -package com.heibaiying.dao.impl; - -import com.heibaiying.bean.Flow; -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ -public interface OracleDao { - - List get(); -} - -``` - ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Flow; -import com.heibaiying.dao.impl.OracleDao; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Repository; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @Repository public class OracleDaoImpl implements OracleDao { @@ -298,29 +152,11 @@ public class OracleDaoImpl implements OracleDao { return flows; } } - ``` -6.新建测试类进行测试 +#### 4.新建测试类进行测试 ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Relation; -import com.heibaiying.dao.impl.MysqlDao; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) @ContextConfiguration({"classpath:springApplication.xml"}) public class MysqlDaoTest { @@ -342,24 +178,6 @@ public class MysqlDaoTest { ``` ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Flow; -import com.heibaiying.dao.impl.OracleDao; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) @ContextConfiguration({"classpath:springApplication.xml"}) public class OracleDaoTest { diff --git a/spring/spring-jdbc/src/main/resources/jdbc.properties b/spring/spring-jdbc/src/main/resources/jdbc.properties index 6dadcd3..fb89a05 100644 --- a/spring/spring-jdbc/src/main/resources/jdbc.properties +++ b/spring/spring-jdbc/src/main/resources/jdbc.properties @@ -1,6 +1,6 @@ # mysql ݿ -mysql.driverClassName=com.mysql.jdbc.Driver -mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.driverClassName=com.mysql.cj.jdbc.Driver +mysql.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false mysql.username=root mysql.password=root diff --git a/spring/spring-memcached-annotation/README.md b/spring/spring-memcached-annotation/README.md index 5254836..487f8a1 100644 --- a/spring/spring-memcached-annotation/README.md +++ b/spring/spring-memcached-annotation/README.md @@ -10,7 +10,7 @@ XMemcached是基于java nio的memcached高性能客户端,支持完整的memca 1. memcached的整合配置位于com.heibaiying.config文件夹下。 -![spring+redis项目目录结构](D:\spring-samples-for-all\pictures\spring-memcached-annotation.png) +
### 1.3 依赖说明 diff --git a/spring/spring-memcached/README.md b/spring/spring-memcached/README.md index 0615160..b4ca3af 100644 --- a/spring/spring-memcached/README.md +++ b/spring/spring-memcached/README.md @@ -11,7 +11,7 @@ XMemcached是基于java nio的memcached高性能客户端,支持完整的memca 1. memcached的整合配置位于resources下的memcached文件夹下,其中集群配置用cluster开头。所有配置按照需要在springApplication.xml用import导入。 2. 实体类Programmer.java用于测试memcached序列化与反序列化 -![spring+redis项目目录结构](D:\spring-samples-for-all\pictures\spring-memcached.png) +
**springapplication.xml文件:** diff --git a/spring/spring-memcached/src/test/java/com/heibaiying/memcached/MemSamples.java b/spring/spring-memcached/src/test/java/com/heibaiying/memcached/MemSamples.java index 6a26236..e0130ee 100644 --- a/spring/spring-memcached/src/test/java/com/heibaiying/memcached/MemSamples.java +++ b/spring/spring-memcached/src/test/java/com/heibaiying/memcached/MemSamples.java @@ -2,6 +2,7 @@ package com.heibaiying.memcached; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.exception.MemcachedException; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +29,6 @@ public class MemSamples { System.out.println("hello=" + value); memcachedClient.delete("hello"); value = memcachedClient.get("hello"); - System.out.println("hello=" + value); + Assert.assertNull(value); } } diff --git a/spring/spring-mongodb-annotation/README.md b/spring/spring-mongodb-annotation/README.md index aec50c7..6297afd 100644 --- a/spring/spring-mongodb-annotation/README.md +++ b/spring/spring-mongodb-annotation/README.md @@ -6,7 +6,7 @@ 配置文件位于com.heibaiying.config下,项目以单元测试的方式进行测试。 -![spring-mongodb-annotation](D:\spring-samples-for-all\pictures\spring-mongodb-annotation.png) +
diff --git a/spring/spring-mongodb/README.md b/spring/spring-mongodb/README.md index 7f5d03d..14257fe 100644 --- a/spring/spring-mongodb/README.md +++ b/spring/spring-mongodb/README.md @@ -6,7 +6,7 @@ 配置文件位于resources下,项目以单元测试的方式进行测试。 -![spring+redis项目目录结构](D:\spring-samples-for-all\pictures\spring-mongodb.png) +
diff --git a/spring/spring-mybatis-annotation/README.md b/spring/spring-mybatis-annotation/README.md index af6d0fc..3b8aa26 100644 --- a/spring/spring-mybatis-annotation/README.md +++ b/spring/spring-mybatis-annotation/README.md @@ -1,125 +1,48 @@ -# spring 整合 mybatis(注解配置方式) +# spring 整合 mybatis(注解方式) -1、创建标准web maven工程,导入依赖 +## 一、说明 + +#### 1.1 项目结构 + +
+ +#### 1.2 项目依赖 + +除了spring相关依赖外,还需要导入数据库驱动和对应的mybatis依赖包 ```xml - - - 4.0.0 - - com.heibaiying + + + org.springframework spring-jdbc - 1.0-SNAPSHOT - - 5.1.3.RELEASE - - - - - - org.springframework - spring-context - ${spring-base-version} - - - org.springframework - spring-beans - ${spring-base-version} - - - org.springframework - spring-core - ${spring-base-version} - - - org.springframework - spring-web - ${spring-base-version} - - - org.springframework - spring-webmvc - ${spring-base-version} - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - org.projectlombok - lombok - 1.18.4 - provided - - - - org.springframework - spring-jdbc - ${spring-base-version} - - - mysql - mysql-connector-java - 8.0.13 - - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring-base-version} - test - - - com.oracle - ojdbc6 - 11.2.0.3.0 - - - - org.mybatis - mybatis-spring - 1.3.2 - - - org.mybatis - mybatis - 3.4.6 - - - - + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + + + org.mybatis + mybatis-spring + 1.3.2 + + + org.mybatis + mybatis + 3.4.6 + ``` -2、新建 DispatcherServletInitializer.java继承自AbstractAnnotationConfigDispatcherServletInitializer,等价于我们在web.xml中配置的前端控制器 +## 二、spring 整合 mybatis -```java -public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { - - protected Class[] getRootConfigClasses() { - return new Class[0]; - } - - protected Class[] getServletConfigClasses() { - return new Class[]{ServletConfig.class}; - } - - protected String[] getServletMappings() { - return new String[]{"/"}; - } -} -``` - -3、在resources文件夹下新建数据库配置文件mysql.properties、oracle.properties +#### 2.1 在resources文件夹下新建数据库配置文件jdbc.properties及其映射类 ```properties # mysql 数据库配置 @@ -127,9 +50,7 @@ mysql.driverClassName=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/mysql mysql.username=root mysql.password=root -``` -```properties # oracle 数据库配置 oracle.driverClassName=oracle.jdbc.driver.OracleDriver oracle.url=jdbc:oracle:thin:@//IP地址:端口号/数据库实例名 @@ -137,21 +58,7 @@ oracle.username=用户名 oracle.password=密码 ``` -4、在新建数据库配置映射类DataSourceConfig.java - ```java -package com.heibaiying.config; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -/** - * @author : heibaiying - * @description : - */ - @Configuration @PropertySource(value = "classpath:mysql.properties") @Data @@ -167,35 +74,18 @@ public class DataSourceConfig { private String password; } - ``` -5、新建ServletConfig.java,进行数据库相关配置 +#### 2.2 配置数据源和mybatis会话工厂、定义事务管理器 ```java -package com.heibaiying.config; - -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.mapper.MapperScannerConfigurer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration;; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.jdbc.datasource.DriverManagerDataSource; -import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.io.IOException; - - /** * @author : heibaiying */ @Configuration @EnableTransactionManagement // 开启声明式事务处理 等价于xml中 @ComponentScan(basePackages = {"com.heibaiying.*"}) -public class ServletConfig implements WebMvcConfigurer { +public class DatabaseConfig { /* @Autowired * private DataSourceConfig sourceConfig; @@ -216,7 +106,6 @@ public class ServletConfig implements WebMvcConfigurer { return dataSource; } - /** * 配置mybatis 会话工厂 * @@ -258,7 +147,7 @@ public class ServletConfig implements WebMvcConfigurer { ``` -5、新建mybtais 配置文件 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) +#### 2.3 新建mybtais配置文件,按照需求配置额外参数, 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) ```xml @@ -281,7 +170,7 @@ public class ServletConfig implements WebMvcConfigurer { ``` -5、新建查询接口及其对应的mapper文件 +#### 2.4 新建查询接口及其对应的mapper文件 ```java public interface MysqlDao { @@ -328,30 +217,11 @@ public interface OracleDao { ``` -6.新建测试类进行测试 +#### 2.5 新建测试类进行测试 ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Relation; -import com.heibaiying.config.DataSourceConfig; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {DatabaseConfig.class}) public class MysqlDaoTest { @Autowired @@ -370,27 +240,8 @@ public class MysqlDaoTest { ``` ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Flow; -import com.heibaiying.config.DataSourceConfig; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {DatabaseConfig.class}) public class OracleDaoTest { @Autowired @@ -406,5 +257,6 @@ public class OracleDaoTest { } } } + ``` diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java index 51dd508..295ae2d 100644 --- a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java @@ -7,7 +7,6 @@ import org.springframework.context.annotation.PropertySource; /** * @author : heibaiying - * @description : */ @Configuration @@ -15,10 +14,6 @@ import org.springframework.context.annotation.PropertySource; @Data public class DataSourceConfig { - /** - * 感觉这种注入的方式并不够好 - * 没有spring-boot中使用@ConfigurationProperties(prefix = "config")指定前缀注入的方式优雅 - */ @Value("${mysql.driverClassName}") private String driverClassName; @Value("${mysql.url}") diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DatabaseConfig.java similarity index 98% rename from spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java rename to spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DatabaseConfig.java index 33d9bec..85a5dde 100644 --- a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DatabaseConfig.java @@ -20,7 +20,7 @@ import java.io.IOException; @Configuration @EnableTransactionManagement // 开启声明式事务处理 等价于xml中 @ComponentScan(basePackages = {"com.heibaiying.*"}) -public class ServletConfig implements WebMvcConfigurer { +public class DatabaseConfig { /* @Autowired * private DataSourceConfig sourceConfig; diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java deleted file mode 100644 index 7ed14d2..0000000 --- a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.heibaiying.config; - -import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; - -/** - * @author : heibaiying - */ - -public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { - - protected Class[] getRootConfigClasses() { - return new Class[0]; - } - - protected Class[] getServletConfigClasses() { - return new Class[]{ServletConfig.class}; - } - - protected String[] getServletMappings() { - return new String[]{"/"}; - } -} diff --git a/spring/spring-mybatis-annotation/src/main/resources/mysql.properties b/spring/spring-mybatis-annotation/src/main/resources/mysql.properties index e8ab06b..27b2bdc 100644 --- a/spring/spring-mybatis-annotation/src/main/resources/mysql.properties +++ b/spring/spring-mybatis-annotation/src/main/resources/mysql.properties @@ -1,5 +1,5 @@ # mysql ݿ -mysql.driverClassName=com.mysql.jdbc.Driver -mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.driverClassName=com.mysql.cj.jdbc.Driver +mysql.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false mysql.username=root mysql.password=root diff --git a/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java index 99dc047..30d5d9a 100644 --- a/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java +++ b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java @@ -1,9 +1,7 @@ package com.heibaiying.dao; import com.heibaiying.bean.Relation; -import com.heibaiying.config.DataSourceConfig; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; +import com.heibaiying.config.DatabaseConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -18,7 +16,7 @@ import java.util.List; */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {DatabaseConfig.class}) public class MysqlDaoTest { @Autowired diff --git a/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java index 38a03d6..f5e9350 100644 --- a/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java +++ b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java @@ -1,9 +1,7 @@ package com.heibaiying.dao; import com.heibaiying.bean.Flow; -import com.heibaiying.config.DataSourceConfig; -import com.heibaiying.config.DispatcherServletInitializer; -import com.heibaiying.config.ServletConfig; +import com.heibaiying.config.DatabaseConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -18,7 +16,7 @@ import java.util.List; */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +@ContextConfiguration(classes = {DatabaseConfig.class}) public class OracleDaoTest { @Autowired diff --git a/spring/spring-mybatis/README.md b/spring/spring-mybatis/README.md index 492f2f2..aa454a0 100644 --- a/spring/spring-mybatis/README.md +++ b/spring/spring-mybatis/README.md @@ -1,135 +1,48 @@ # spring 整合 mybatis(xml配置方式) -1、创建标准web maven工程,导入依赖 +## 一、说明 + +#### 1.1 项目结构 + +
+ +#### 1.2 项目依赖 + +除了spring相关依赖外,还需要导入数据库驱动和对应的mybatis依赖包 ```xml - - - 4.0.0 - - com.heibaiying + + + org.springframework spring-jdbc - 1.0-SNAPSHOT - - 5.1.3.RELEASE - - - - - - org.springframework - spring-context - ${spring-base-version} - - - org.springframework - spring-beans - ${spring-base-version} - - - org.springframework - spring-core - ${spring-base-version} - - - org.springframework - spring-web - ${spring-base-version} - - - org.springframework - spring-webmvc - ${spring-base-version} - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - org.projectlombok - lombok - 1.18.4 - provided - - - - org.springframework - spring-jdbc - ${spring-base-version} - - - mysql - mysql-connector-java - 8.0.13 - - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring-base-version} - test - - - com.oracle - ojdbc6 - 11.2.0.3.0 - - - - org.mybatis - mybatis-spring - 1.3.2 - - - org.mybatis - mybatis - 3.4.6 - - - - + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + + + org.mybatis + mybatis-spring + 1.3.2 + + + org.mybatis + mybatis + 3.4.6 + ``` -2、在web.xml 进行如下配置 +## 二、spring 整合 mybatis -```xml - - - - - - springMvc - org.springframework.web.servlet.DispatcherServlet - - contextConfigLocation - classpath:springApplication.xml - - 1 - - - - springMvc - / - - - -``` - -3、在resources文件夹下新建数据库配置文件jdbc.properties +#### 2.1 在resources文件夹下新建数据库配置文件jdbc.properties ```properties # mysql 数据库配置 @@ -145,7 +58,7 @@ oracle.username=用户名 oracle.password=密码 ``` -4、在resources文件夹下创建springApplication.xml 配置文件 +#### 2.2 配置数据源和mybatis会话工厂、定义事务管理器 ```xml @@ -205,7 +118,7 @@ oracle.password=密码 ``` -5、新建mybtais 配置文件 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) +#### 2.3 新建mybtais配置文件,按照需求配置额外参数, 更多settings配置项可以参考[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html) ```xml @@ -228,7 +141,7 @@ oracle.password=密码 ``` -5、新建查询接口及其对应的mapper文件 +#### 2.4 新建查询接口及其对应的mapper文件 ```java public interface MysqlDao { @@ -275,26 +188,9 @@ public interface OracleDao { ``` -6.新建测试类进行测试 +#### 2.5 新建测试类进行测试 ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Relation; -import com.heibaiying.dao.impl.MysqlDao; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) @ContextConfiguration({"classpath:springApplication.xml"}) public class MysqlDaoTest { @@ -316,24 +212,6 @@ public class MysqlDaoTest { ``` ```java -package com.heibaiying.dao; - -import com.heibaiying.bean.Flow; -import com.heibaiying.dao.impl.OracleDao; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -/** - * @author : heibaiying - * @description : - */ - @RunWith(SpringRunner.class) @ContextConfiguration({"classpath:springApplication.xml"}) public class OracleDaoTest { diff --git a/spring/spring-mybatis/src/main/resources/jdbc.properties b/spring/spring-mybatis/src/main/resources/jdbc.properties index 6dadcd3..fb89a05 100644 --- a/spring/spring-mybatis/src/main/resources/jdbc.properties +++ b/spring/spring-mybatis/src/main/resources/jdbc.properties @@ -1,6 +1,6 @@ # mysql ݿ -mysql.driverClassName=com.mysql.jdbc.Driver -mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.driverClassName=com.mysql.cj.jdbc.Driver +mysql.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false mysql.username=root mysql.password=root diff --git a/spring/spring-rabbitmq-annotation/README.md b/spring/spring-rabbitmq-annotation/README.md index 8ef27f7..3752593 100644 --- a/spring/spring-rabbitmq-annotation/README.md +++ b/spring/spring-rabbitmq-annotation/README.md @@ -14,7 +14,7 @@ -![spring-rabbitmq](D:\spring-samples-for-all\pictures\spring-rabbitmq-annotation.png) +
diff --git a/spring/spring-rabbitmq/README.md b/spring/spring-rabbitmq/README.md index 8c23748..55235e7 100644 --- a/spring/spring-rabbitmq/README.md +++ b/spring/spring-rabbitmq/README.md @@ -14,7 +14,7 @@ -![spring-rabbitmq](D:\spring-samples-for-all\pictures\spring-rabbitmq.png) +
diff --git a/spring/spring-redis-annotation/README.md b/spring/spring-redis-annotation/README.md index d893696..cf8abeb 100644 --- a/spring/spring-redis-annotation/README.md +++ b/spring/spring-redis-annotation/README.md @@ -11,7 +11,7 @@ 注:关于redis其他语言官方推荐的客户端可以在[客户端](http://www.redis.cn/clients.html)该网页查看,其中官方推荐的用了黄色星星:star:标注。 -![redis官方推荐客户端](D:\spring-samples-for-all\pictures\redis官方推荐客户端.png) +
@@ -24,7 +24,7 @@ 1. jedis和redisson的配置类和单元测试分别位于config和test下对应的包中,其中集群的配置类以cluster开头。 2. 实体类Programmer.java用于测试Redisson序列化与反序列化 -![spring+redis+ano项目目录结构](D:\spring-samples-for-all\pictures\spring-redis-annotation.png) +
diff --git a/spring/spring-redis/README.md b/spring/spring-redis/README.md index fafd639..ab37266 100644 --- a/spring/spring-redis/README.md +++ b/spring/spring-redis/README.md @@ -11,7 +11,7 @@ 注:关于redis其他语言官方推荐的客户端可以在[客户端](http://www.redis.cn/clients.html)该网页查看,其中官方推荐的用了黄色星星:star:标注。 -![redis官方推荐客户端](D:\spring-samples-for-all\pictures\redis官方推荐客户端.png) +
@@ -24,7 +24,7 @@ 1. jedis和redisson的配置和单元测试分别位于resources和test下对应的包中,其中集群的配置文件以cluster结尾。所有配置按照需要在springApplication.xml用import导入。 2. 实体类Programmer.java用于测试Redisson序列化与反序列化 -![spring+redis项目目录结构](D:\spring-samples-for-all\pictures\spring-redis.png) +
**springapplication.xml文件:** @@ -281,7 +281,7 @@ public class JedisClusterSamples { + --> diff --git a/spring/spring-redis/src/main/resources/redisson/redissonCluster.xml b/spring/spring-redis/src/main/resources/redisson/redissonCluster.xml index 6e20bdd..a97c919 100644 --- a/spring/spring-redis/src/main/resources/redisson/redissonCluster.xml +++ b/spring/spring-redis/src/main/resources/redisson/redissonCluster.xml @@ -8,7 +8,7 @@ + --> diff --git a/spring/spring-scheduling-annotation/README.md b/spring/spring-scheduling-annotation/README.md index ddaa651..f7f5c7e 100644 --- a/spring/spring-scheduling-annotation/README.md +++ b/spring/spring-scheduling-annotation/README.md @@ -6,7 +6,7 @@ 关于任务的调度配置定义在ServletConfig.java中,为方便观察项目定时执行的情况,项目以web的方式构建。 -![spring-scheduling](D:\spring-samples-for-all\pictures\spring-scheduling-annotation.png) +
diff --git a/spring/spring-scheduling/README.md b/spring/spring-scheduling/README.md index 0cf9d90..2131f0e 100644 --- a/spring/spring-scheduling/README.md +++ b/spring/spring-scheduling/README.md @@ -6,7 +6,7 @@ 关于任务的调度配置定义在springApplication.xml中,为方便观察项目定时执行的情况,项目以web的方式构建。 -![spring-scheduling](D:\spring-samples-for-all\pictures\spring-scheduling.png) +
diff --git a/spring/spring-websocket-annotation/README.md b/spring/spring-websocket-annotation/README.md index c235a81..f68c97f 100644 --- a/spring/spring-websocket-annotation/README.md +++ b/spring/spring-websocket-annotation/README.md @@ -11,7 +11,7 @@ 5. webSocketConfig 是websocket 的主要配置类; 6. 项目以web的方式构建。 -![spring-scheduling](D:\spring-samples-for-all\pictures\spring-websocket-annotation.png) +
diff --git a/spring/spring-websocket/README.md b/spring/spring-websocket/README.md index 7752223..7cbcf34 100644 --- a/spring/spring-websocket/README.md +++ b/spring/spring-websocket/README.md @@ -9,7 +9,7 @@ 3. CustomHandershakerInterceptor为自定义的 websocket 的握手拦截器; 4. 项目以web的方式构建。 -![spring-scheduling](D:\spring-samples-for-all\pictures\spring-websocket.png) +
diff --git a/z-utils/ChangeImageUrl.java b/z-utils/ChangeImageUrl.java new file mode 100644 index 0000000..8dc34fe --- /dev/null +++ b/z-utils/ChangeImageUrl.java @@ -0,0 +1,71 @@ +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +/** + * @author : heibaiying + * @description : 转换本地图片为Github图片工具类 + */ +public class ChangeImageUrl { + + public static void main(String[] args) throws Exception { + + if (args.length < 1) { + System.out.println("请传递路径"); + return; + } + + String dir = args[0]; + + String preUrl = "https://github.com/heibaiying/spring-samples-for-all/blob/master/pictures/"; + String regex = "(!\\[(\\S*)]\\(D:\\\\spring-samples-for-all\\\\pictures\\\\(\\S*)\\)[^(
)]*?)"; + + List filesList = getAllFile(dir, new ArrayList<>()); + for (String filePath : filesList) { + changeImageUrl(filePath, preUrl, regex); + } + System.out.println("图片地址转换成功!"); + } + + + private static void changeImageUrl(String filePath, String preUrl, String oldImageUrlRegex) throws IOException { + + FileReader reader = new FileReader(filePath); + StringBuilder stringBuilder = new StringBuilder(); + char[] chars = new char[1024 * 1024]; + int read = 0; + while ((read = reader.read(chars)) != -1) { + stringBuilder.append(new String(chars, 0, read)); + } + reader.close(); + String content = stringBuilder.toString(); + //github 居中方式
+ String newContent = content.replaceAll(oldImageUrlRegex, + String.format("
", preUrl)); + FileWriter fileWriter = new FileWriter(new File(filePath)); + fileWriter.write(newContent); + fileWriter.flush(); + + } + + private static List getAllFile(String dir, List filesList) { + File file = new File(dir); + //如果是文件 则不遍历 + if (file.isFile() && file.getName().endsWith(".md")) { + filesList.add(file.getAbsolutePath()); + } + //如果是文件夹 则遍历下面的所有文件 + File[] files = file.listFiles(); + if (files != null) { + for (File f : files) { + if (f.isDirectory() && !f.getName().startsWith(".")) { + getAllFile(f.getAbsolutePath(), filesList); + } else if (f.getName().endsWith(".md")) { + filesList.add(f.getAbsolutePath()); + } + } + } + return filesList; + } + +} \ No newline at end of file