Spring+Spring MVC+MyBatis+Maven

SSM整合的核心还是Spring+MyBatis的整合,回顾一下MyBatis操作数据库流程,我们是使用一个SQLSessionFactory对象来获得SQLSession,之后再进行CRUD操作。

现在,有了spring,我们就把SQLSessionFactory通过spring进行装载和管理。

如果是想直接使用的话,请去SSM-Maven-Archetype

步骤

1.创建maven项目

2.添加依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.wan</groupId>
  7. <artifactId>SSM-Template</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <packaging>war</packaging>
  10. <name>SSM-Template Maven Webapp</name>
  11. <!-- FIXME change it to the project's website -->
  12. <url>http://www.example.com</url>
  13. <properties>
  14. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15. <maven.compiler.source>1.7</maven.compiler.source>
  16. <maven.compiler.target>1.7</maven.compiler.target>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>junit</groupId>
  21. <artifactId>junit</artifactId>
  22. <version>4.11</version>
  23. <scope>test</scope>
  24. </dependency>
  25. <!--日志-->
  26. <dependency>
  27. <groupId>commons-logging</groupId>
  28. <artifactId>commons-logging</artifactId>
  29. <version>RELEASE</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework</groupId>
  33. <artifactId>spring-context</artifactId>
  34. <version>4.3.9.release</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework</groupId>
  38. <artifactId>spring-context-support</artifactId>
  39. <version>4.3.9.release</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework</groupId>
  43. <artifactId>spring-test</artifactId>
  44. <version>4.3.9.release</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework</groupId>
  48. <artifactId>spring-core</artifactId>
  49. <version>4.3.9.release</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-beans</artifactId>
  54. <version>4.3.9.release</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.springframework</groupId>
  58. <artifactId>spring-expression</artifactId>
  59. <version>4.3.9.release</version>
  60. </dependency>
  61. <dependency>
  62. <groupId>org.springframework</groupId>
  63. <artifactId>spring-web</artifactId>
  64. <version>4.3.9.release</version>
  65. </dependency>
  66. <dependency>
  67. <groupId>org.springframework</groupId>
  68. <artifactId>spring-webmvc</artifactId>
  69. <version>4.3.9.release</version>
  70. </dependency>
  71. <dependency>
  72. <groupId>org.springframework</groupId>
  73. <artifactId>spring-orm</artifactId>
  74. <version>4.3.9.release</version>
  75. </dependency>
  76. <!--AOP-->
  77. <dependency>
  78. <groupId>org.springframework</groupId>
  79. <artifactId>spring-aop</artifactId>
  80. <version>4.3.9.release</version>
  81. </dependency>
  82. <dependency>
  83. <groupId>org.aspectj</groupId>
  84. <artifactId>aspectjweaver</artifactId>
  85. <version>RELEASE</version>
  86. </dependency>
  87. <dependency>
  88. <groupId>aopalliance</groupId>
  89. <artifactId>aopalliance</artifactId>
  90. <version>RELEASE</version>
  91. </dependency>
  92. <!-- springmvc依赖的json库(如果使用@responsebody注解返回json数据) -->
  93. <dependency>
  94. <groupId>com.fasterxml.jackson.core</groupId>
  95. <artifactId>jackson-core</artifactId>
  96. <version>2.7.3</version>
  97. </dependency>
  98. <dependency>
  99. <groupId>com.fasterxml.jackson.core</groupId>
  100. <artifactId>jackson-databind</artifactId>
  101. <version>2.7.3</version>
  102. </dependency>
  103. <dependency>
  104. <groupId>org.apache.commons</groupId>
  105. <artifactId>commons-lang3</artifactId>
  106. <version>3.3.2</version>
  107. </dependency>
  108. <dependency>
  109. <groupId>javax.servlet</groupId>
  110. <artifactId>javax.servlet-api</artifactId>
  111. <version>4.0.1</version>
  112. </dependency>
  113. <!-- jstl 1.2.5 version libarary -->
  114. <dependency>
  115. <groupId>org.apache.taglibs</groupId>
  116. <artifactId>taglibs-standard-spec</artifactId>
  117. <version>1.2.5</version>
  118. </dependency>
  119. <dependency>
  120. <groupId>org.apache.taglibs</groupId>
  121. <artifactId>taglibs-standard-impl</artifactId>
  122. <version>1.2.5</version>
  123. </dependency>
  124. <!-- oracle driver -->
  125. <dependency>
  126. <groupId>com.github.noraui</groupId>
  127. <artifactId>ojdbc8</artifactId>
  128. <version>12.2.0.1</version>
  129. </dependency>
  130. <!-- mybatis orm框架 -->
  131. <dependency>
  132. <groupId>org.mybatis</groupId>
  133. <artifactId>mybatis</artifactId>
  134. <version>3.5.2</version>
  135. </dependency>
  136. <!--阿里巴巴连接池-->
  137. <dependency>
  138. <groupId>com.alibaba</groupId>
  139. <artifactId>druid</artifactId>
  140. <version>1.1.10</version>
  141. </dependency>
  142. <!-- spring整合mybatis -->
  143. <dependency>
  144. <groupId>org.mybatis</groupId>
  145. <artifactId>mybatis-spring</artifactId>
  146. <version>2.0.2</version>
  147. </dependency>
  148. <!--文件上传-->
  149. <dependency>
  150. <groupId>commons-fileupload</groupId>
  151. <artifactId>commons-fileupload</artifactId>
  152. <version>1.3.1</version>
  153. </dependency>
  154. <!-- 日志库 -->
  155. <dependency>
  156. <groupId>org.slf4j</groupId>
  157. <artifactId>slf4j-api</artifactId>
  158. <version>1.7.25</version>
  159. </dependency>
  160. <dependency>
  161. <groupId>org.slf4j</groupId>
  162. <artifactId>slf4j-log4j12</artifactId>
  163. <version>1.7.25</version>
  164. </dependency>
  165. <!-- apache libraries -->
  166. <dependency>
  167. <groupId>log4j</groupId>
  168. <artifactId>log4j</artifactId>
  169. <version>1.2.17</version>
  170. </dependency>
  171. <dependency>
  172. <groupId>org.apache.logging.log4j</groupId>
  173. <artifactId>log4j-core</artifactId>
  174. <version>2.5</version>
  175. </dependency>
  176. <!--MyBatis分页插件-->
  177. <dependency>
  178. <groupId>com.github.pagehelper</groupId>
  179. <artifactId>pagehelper</artifactId>
  180. <!--自动下载最新版本 -->
  181. <version>5.1.6</version>
  182. </dependency>
  183. </dependencies>
  184. <build>
  185. <finalName>SSM-Template</finalName>
  186. <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  187. <plugins>
  188. <plugin>
  189. <artifactId>maven-clean-plugin</artifactId>
  190. <version>3.1.0</version>
  191. </plugin>
  192. <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  193. <plugin>
  194. <artifactId>maven-resources-plugin</artifactId>
  195. <version>3.0.2</version>
  196. </plugin>
  197. <plugin>
  198. <artifactId>maven-compiler-plugin</artifactId>
  199. <version>3.8.0</version>
  200. </plugin>
  201. <plugin>
  202. <artifactId>maven-surefire-plugin</artifactId>
  203. <version>2.22.1</version>
  204. </plugin>
  205. <plugin>
  206. <artifactId>maven-war-plugin</artifactId>
  207. <version>3.2.2</version>
  208. </plugin>
  209. <plugin>
  210. <artifactId>maven-install-plugin</artifactId>
  211. <version>2.5.2</version>
  212. </plugin>
  213. <plugin>
  214. <artifactId>maven-deploy-plugin</artifactId>
  215. <version>2.8.2</version>
  216. </plugin>
  217. </plugins>
  218. </pluginManagement>
  219. </build>
  220. </project>

3.整合SpringMVC

前三步主要是整合Spring+SpringMVC框架,可以参考一下这篇Spring MVC框架,这里不过多补充

4.整合Spring和MyBatis

spring中,完美地整合了MyBatis,所以,可以不需要MyBatis的配置的文件,如果需要的话,也可以配置MyBatis的配置文件,之后引入即可

主要流程为:

  1. 创建一个db.properties,存放数据库url、账户和密码
  2. 创建DataSource的bean对象(使用连接池,利用上面的db.properties)
  3. 创建MyBatis的SqlSessionFactory的bean对象(使用上面的DataSourcebean的bean对象)
  4. 配置自动装载mapper接口

下面是我的spring配置,使用了阿里巴巴的连接池开源库,以及MyBatis的分页插件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:util="http://www.springframework.org/schema/util"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xmlns:aop="http://www.springframework.org/schema/aop"
  9. xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
  10. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  11. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  13. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  14. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
  15. http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
  16. <!--
  17. 1. 扫描Service 组件, Mapper 组件
  18. @Service, @Repository
  19. 2. 配置数据源
  20. 3. 集合mybatis一些相关配置
  21. 4. 数据库事务管理器
  22. 5. AOP事务,即通过AOP方式将数据库事务切到指定的Service组件
  23. -->
  24. <context:annotation-config />
  25. <!-- 扫描dao类(service),可以有多个包使用逗号分隔包名,以完成Bean创建和自动依赖注入的功能-->
  26. <!--<context:component-scan base-package="dao" />-->
  27. <!-- 引用属性文件中的数据库资源-->
  28. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  29. <property name="locations" value="classpath:db.properties"/>
  30. </bean>
  31. <!-- 声明一个alibaba druid 数据源 -->
  32. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
  33. init-method="init" destroy-method="close">
  34. <!-- 基本属性 url、user、password -->
  35. <property name="url" value="${url}" />
  36. <property name="username" value="${username}" />
  37. <property name="password" value="${password}" />
  38. <!-- <property name="driverClassName" value="${jdbc.driver}"></property> -->
  39. <!-- 配置初始化大小、最小、最大 -->
  40. <property name="initialSize" value="1" />
  41. <property name="minIdle" value="1" />
  42. <property name="maxActive" value="20" />
  43. <!-- 配置获取连接等待超时的时间 -->
  44. <property name="maxWait" value="60000" />
  45. <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  46. <property name="timeBetweenEvictionRunsMillis" value="60000" />
  47. <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  48. <property name="minEvictableIdleTimeMillis" value="300000" />
  49. <property name="validationQuery" value="SELECT 'x' FROM DUAL" />
  50. <property name="testWhileIdle" value="true" />
  51. <property name="testOnBorrow" value="false" />
  52. <property name="testOnReturn" value="false" />
  53. <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
  54. <property name="poolPreparedStatements" value="true" />
  55. <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
  56. <!-- 配置监控统计拦截的filters -->
  57. <property name="filters" value="stat,log4j" />
  58. </bean>
  59. <!-- 声明 mybatis SqlSessionFactory -->
  60. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  61. <property name="dataSource" ref="dataSource" />
  62. <!-- 需要的话,可以引入单独的myBatis配置文件 -->
  63. <!--<property name="configLocation" value="classpath:mybatis-config.xml"/>-->
  64. <!--可以在此处配置SQL映射文件,但其中不能有相同id的parameterMap, resultMap或sql等-->
  65. <property name="mapperLocations" value="classpath*:mapper/*.xml" />
  66. <property name="typeAliasesPackage" value="model" />
  67. <property name="plugins">
  68. <array>
  69. <bean class="com.github.pagehelper.PageInterceptor">
  70. <property name="properties">
  71. <!--使用下面的方式配置参数,一行配置一个 -->
  72. <value>
  73. <!-- 支持通过Mapper接口参数来传递分页参数
  74. helperDialect=oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
  75. -->
  76. helperDialect=oracle
  77. supportMethodsArguments=true
  78. rowBoundsWithCount=true
  79. offsetAsPageNum=true
  80. pageSizeZero=false
  81. reasonable=true
  82. </value>
  83. </property>
  84. </bean>
  85. </array>
  86. </property>
  87. </bean>
  88. <!-- Scan Mapper Files -->
  89. <!-- 这种方式也可扫描Mapper接口 -->
  90. <!--<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  91. <property name="basePackage" value="mapper" />
  92. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  93. </bean>-->
  94. <!-- scan for mappers and let them be autowired -->
  95. <mybatis:scan base-package="dao" />
  96. <!--================事务相关控制===================-->
  97. <bean name="transactionManager"
  98. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  99. <property name="dataSource" ref="dataSource"/>
  100. </bean>
  101. <!-- AOP事务
  102. Service:
  103. newAccount(){
  104. DAO:
  105. 1. from
  106. 2. to
  107. 3. log
  108. }
  109. <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  110. propagation: 事务的传播行为
  111. read-only:是否是只读事务,此事务内只能做查询,不能做insert,update,delete操作
  112. rollback-for: 当出现此类异常时,该事务回滚
  113. // 必须开启事务
  114. UserService.insertUser(){
  115. // otherService.findX()
  116. otherService.insertXxx(); // c) Requires_New: 新事务
  117. }
  118. -->
  119. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  120. <tx:attributes>
  121. <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  122. <tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  123. <tx:method name="new*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  124. <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  125. <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  126. <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
  127. <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
  128. <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
  129. <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
  130. <tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
  131. </tx:attributes>
  132. </tx:advice>
  133. <!--aop配置-->
  134. <aop:config>
  135. </aop:config>
  136. </beans>

5.生成maven骨架

打开IDEA中的命令行窗口,输入下面命令(得配置好maven的环境变量)

  1. mvn archetype:create-from-project

出现build success就说明成功了

PS: 保留空白文件夹的解决方法

上述创建的项目有几个是空白文件夹,但是安装骨架之后,使用骨架创建maven项目的时候发现,空白文件夹被忽略了,找到了网上的两个解决方法

  1. 在空白文件夹放文件
  2. 修改配置

这里就讲一下第二种方法,是在Stack Overflow找到的方法

执行mvn archetype:create-from-project之后,修改target/generated-sources/archetype/src/main/resources/META-INF/maven archetype-metadata.xml

  1. <fileSet encoding="UTF-8">
  2. <directory>src/main/application/controller</directory>
  3. </fileSet>

下面是我的添加部分:

  1. <fileSet filtered="true" encoding="UTF-8">
  2. <directory>src/main/java</directory>
  3. <includes>
  4. <include>**/*.java</include>
  5. </includes>
  6. </fileSet>
  7. <fileSet encoding="UTF-8">
  8. <directory>src/main/java/controller</directory>
  9. </fileSet>
  10. <fileSet encoding="UTF-8">
  11. <directory>src/main/java/dao</directory>
  12. </fileSet>
  13. <fileSet encoding="UTF-8">
  14. <directory>src/main/java/model</directory>
  15. </fileSet>
  16. <fileSet encoding="UTF-8">
  17. <directory>src/main/resources/mapper</directory>
  18. </fileSet>
  19. <fileSet encoding="UTF-8">
  20. <directory>src/main/webapp/css</directory>
  21. </fileSet>
  22. <fileSet encoding="UTF-8">
  23. <directory>src/main/webapp/img</directory>
  24. </fileSet>
  25. <fileSet encoding="UTF-8">
  26. <directory>src/main/webapp/js</directory>
  27. </fileSet>
  28. <fileSet encoding="UTF-8">
  29. <directory>src/main/webapp/view</directory>
  30. </fileSet>

除此之外,还有几个文件需要修改

target\generated-sources\archetype\src\main\resources\archetype-resources\src\main\resources下面的spring和springmvc两个配置文件

target\generated-sources\archetype\src\main\resources\archetype-resources\src\main\webapp中的web.xml

里面的xml版本莫名其妙变成了1.0-SNAPSHOT,我们全部改成固定的1.0

6.安装并添加maven骨架

命令行路径进入到target\generated-sources\archetype

  1. cd target\generated-sources\archetype

输入安装命令

  1. mvn clean install

出现build success表示成功

打开target\generated-sources\archetype目录下的pom.xml,记住下面的前三个坐标信息

重新新建一个maven项目,之后,选择添加一个archetype,输入坐标

之后就是可以看到列表由我们的自定义骨架了

7.使用maven骨架

像之前一样,选择我们的自定义骨架,新建一个maven项目

使用注意事项

修改配置

根据自己的要求,进行配置的更改

首先是数据源的配置db.properties

spring-config.xml

72行 mapper的路径(相对于resources目录来说)

105行 dao类中的包,

  1. <mybatis:scan base-package="dao" />

是会自动扫描Mapper所在的包,并生成一个id为xx的bean(Dao对象),之后我们就可以通过spring容器获得这个对象,使用这个对象来进行CRUD操作

相当于下面的代码

  1. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  2. <property name="basePackage" value="dao" />
  3. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  4. </bean>

Mybatis使用

Mybatis中,我们可以按照约定,把接口类和mapper.xml文件对应起来,从而更为简单地实现CRUD操作

项目中,我有这样的对应的接口类和mapper.xml文件

UserMapper中的namespace就是为dao.UserDao,这里namespace一定要对应上接口类UserDao

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <!--
  5. namespace: 命名空间,用于标识每一个Mapper XML文件中的语句,预防在不同的Mapper XML文件中存在相同的语句ID
  6. -->
  7. <mapper namespace="dao.UserDao">
  8. <!--
  9. resultType: 也称为自动映射,只有在表的列名与POJO类的属性完全一致时使用,会比较方便,全类名
  10. -->
  11. <select id="select" resultType="model.Users">
  12. select * from USERS
  13. </select>
  14. </mapper>

UserDao.java

  1. package dao;
  2. import java.util.List;
  3. import model.Users;
  4. /**
  5. * @author StarsOne
  6. * @date Create in 2019/10/11 0011 20:22
  7. * @description
  8. */
  9. public interface UserDao {
  10. List<Users> select();
  11. }

使用的话就通过这样

  1. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-config.xml");
  2. //spring中自动装载,第一个字母小写,如果是EmployeeDao,则是就是employeeDao
  3. UserDao userMapper = (UserDao) context.getBean("userDao");
  4. List<Users> users = userMapper.selectAll();
  5. for (Users user : users) {
  6. System.out.println(user.toString());
  7. }

分页使用

  1. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-config.xml");
  2. AccountDao acountDao = (AccountDao) context.getBean("accountDao");
  3. //查询第一页,每页有两条数据
  4. PageHelper.startPage(1, 2);
  5. List<Account> accounts = acountDao.selectAll();
  6. for (Account account : accounts) {
  7. System.out.println(account.toString());
  8. }

Spring框架学习笔记(4)——SSM整合以及创建Maven自定义模版的更多相关文章

  1. Spring框架学习笔记(5)——Spring Boot创建与使用

    Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路n ...

  2. Spring框架学习笔记(1)

    Spring 框架学习笔记(1) 一.简介 Rod Johnson(spring之父) Spring是分层的Java SE/EE应用 full-stack(服务端的全栈)轻量级(跟EJB比)开源框架, ...

  3. Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建

    之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...

  4. Spring框架学习笔记(3)——SpringMVC框架

    SpringMVC框架是基于Spring框架,可以让我们更为方便的进行Web的开发,实现前后端分离 思路和原理 我们之前仿照SpringMVC定义了一个自定义MVC框架,两者的思路其实都是一样的. 建 ...

  5. 手写Spring框架学习笔记

    以下是咕泡公开课的学习笔记 一.创建工程springdemo 二.在pom中配置servlet <dependency> <groupId>javax.servlet</ ...

  6. spring框架学习笔记7:事务管理及案例

    Spring提供了一套管理项目中的事务的机制 以前写过一篇简单的介绍事务的随笔:http://www.cnblogs.com/xuyiqing/p/8430214.html 还有一篇Hibernate ...

  7. Spring框架学习笔记(1)——HelloWorld

    1.创建一个新的项目,并添加Spring框架 2.创建HelloWorld.java package com.broadtext.beans.helloworld; public class Hell ...

  8. spring框架学习笔记6:JDBC模板

    JDBC模板:Spring中对数据库的操作. 这一部分对熟悉DBUtils的QueryRunner的开发者来说,非常简单 这是以前我简单写的dbutils的知识: http://www.cnblogs ...

  9. spring框架学习笔记1:搭建测试

    Spring框架介绍: Spring框架涵盖了web.service.dao三层,本身是一个存放对象的容器 形象来说:Spring是项目中对象管家 Spring框架的两大核心思想:控制反转(IOC). ...

随机推荐

  1. Atcoder C - Nuske vs Phantom Thnook(递推+思维)

    题目链接:http://agc015.contest.atcoder.jp/tasks/agc015_c 题意:给一个n*m的格,蓝色的组成路径保证不成环,q个询问,计算指定矩形区域内蓝色连通块的个数 ...

  2. hdu2586 How far away ?(lca模版题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:给出一棵树还有两个点然后求这两个点的最短距离. 题解:val[a]+val[b]-2*va ...

  3. explain的关键字段的意义

    mysql提供的explain工具可以输出一些有用的信息. 一下是相关的部分返回值的意义. select_type 表示SELECT的类型,常见的取值有: SIMPLE:简单表,不使用表连接或子查询 ...

  4. 内存泄露检测工具Valgrind

    内存泄露简介 什么是内存泄漏 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因,程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果. 内存泄 ...

  5. Git学习-上传项目到github

    现在流行把项目代码上传到git上,今天试了好久,终于成功上传到git了,特做点笔记. 准备工作 在github上注册一个账号,创建一个仓库. 创建好仓库,得到它的地址: 开始上传 一.新建一个文件夹, ...

  6. .Net基础篇_学习笔记_第四天_加加减减

    using System.Linq; using System.Text; using System.Threading.Tasks; namespace 第四天_加加减减 { class Progr ...

  7. centos开启nginx服务成功,却无法访问。没有开启80端口。centos配置防火墙 开启80端口

    Linux配置防火墙 开启80端口 编辑配置文件/etc/sysconfig/iptables [root@weixinht ~]# vim /etc/sysconfig/iptables 1 # F ...

  8. MySQL优化之索引原理(二)

    一,前言 ​ 上一篇内容说到了MySQL存储引擎的相关内容,及数据类型的选择优化.下面再来说说索引的内容,包括对B-Tree和B+Tree两者的区别. 1.1,什么是索引 ​ 索引是存储引擎用于快速找 ...

  9. SpringBoot的一个小彩蛋

    彩蛋这种东西还算比较常见,在电影或者游戏里面我们也遇见过不少.今天就简单介绍一下SpringBoot里面的一个小彩蛋. 玩过SpringBoot的同志都知道,SpringBoot的启动界面是这酱紫的: ...

  10. 002:CSS基础

    注意:蓝色 重要:红色 目录: 1. 学会使用CSS选择器: 9大选择器.交集选择器.并集选择器.后代选择器.子代选择器.伪类选择器. 2.font.color.横向竖向居中.文本修饰.首行缩进. f ...