SSM搭建
来源:互联网 发布:天津大学网络教育专业 编辑:程序博客网 时间:2024/05/22 02:28
缓存相关:
- 一级缓存:sqlSession级别的(默认开启)
- 二级缓存:nameSpace级别的(默认关闭)
${}
和#{}
的区别:
${}
:预编译的形式,会保留sql中的?,可以防止sql注入。
#{}
:取出旳值直接放在sql语句中,会有安全的问题。
大多数情况下使用#{}
,但是因为原生的jdbc不支持占位符的地方我们就可以使用${}
,比如按年份分表的情况:
select * from ${year}_salary where xxx;
目录结构:
1.添加maven依赖(4.3.12.RELEASE): <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<!-- spring****************************************start -->
<!-- Spring ioc模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<!-- Spring 数据库模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<!-- Spring web模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<!-- Spring AOP模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.12.RELEASE</version>
</dependency>
<!-- Spring 基础依赖模块 -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<!-- spring*******************************************end -->
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<!-- mybatis-spring整合包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- 数据库连接包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<!--google-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.17</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.40</version>
</dependency>
代码:
Controller:
/** * Created by wb-tianlihui on 2017/11/7. */@Controller@RequestMapping("/")public class TestController { @Autowired private BookService service; @RequestMapping("/test") @ResponseBody public String test(@RequestParam(value = "bookId") long id){ Book book = service.getBookById(id); return JSON.toJSONString(book); }}
Service:
/** * Created by wb-tianlihui on 2017/11/7. */public interface BookService { public Book getBookById(Long id);}/** * Created by wb-tianlihui on 2017/11/7. */@Servicepublic class BookServiceImpl implements BookService { @Autowired private BookDao dao; @Override public Book getBookById(Long id) { return dao.queryById(id); }}
Dao:
/** * Created by wb-tianlihui on 2017/11/7. */@Repositorypublic interface BookDao { /** * 通过ID查询单本图书 * * @param id * @return */ Book queryById(long id);}
Entity:
/** * Created by wb-tianlihui on 2017/11/7. */@Datapublic class Book { // 图书ID private long bookId; // 图书名称 private String name; // 馆藏数量 private int number;}
配置:
web.xml:
<web-app metadata-complete="true" version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <!-- 如果是用mvn命令生成的xml,需要修改servlet版本为3.1 --> <!-- 配置DispatcherServlet --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置springMVC需要加载的配置文件 spring-dao.xml,1spring-service.xml,spring-servlet.xml Mybatis - > spring -> springmvc --> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 默认匹配所有的请求 --> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
spring-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解模式 --> <!-- 简化配置: (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持 --> <mvc:annotation-driven/> <!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 --> <mvc:default-servlet-handler/> <!-- 3.配置jsp 显示ViewResolver --> <mvc:view-resolvers> <mvc:jsp prefix="/WEB-INF/jsp/" suffix=".jsp"/> </mvc:view-resolvers> <!-- 4.扫描web相关的bean --> <context:component-scan base-package="com.tianlh.web"/> <context:component-scan base-package="com.tianlh.service"/> <!-- 5.配置数据库相关参数properties的属性:${url} --> <context:property-placeholder location="classpath:jdbc.properties"/> <import resource="classpath*:spring/spring-dao.xml"/></beans>
spring-dao.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"> <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- 初始化连接大小 --> <property name="initialSize" value="0"/> <!-- 连接池最大使用连接数量 --> <property name="maxActive" value="20"/> <!-- 连接池最大空闲 --> <property name="maxIdle" value="20"/> <!-- 连接池最小空闲 --> <property name="minIdle" value="0"/> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="60000"/> <property name="validationQuery" value="${validationQuery}"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <property name="testWhileIdle" value="true"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="25200000"/> <!-- 打开removeAbandoned功能 --> <property name="removeAbandoned" value="true"/> <!-- 1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="1800"/> <!-- 关闭abanded连接时输出错误日志 --> <property name="logAbandoned" value="true"/> <!-- 监控数据库 sql注入--> <property name="filters" value="wall" /> <!--<property name="filters" value="mergeStat"/>--> </bean> <!-- 3.配置SqlSessionFactory对象 --> <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource"></property> <!-- 配置MyBaties全局配置文件:mybatis-config.xml --> <!-- <property name="configLocation" value="classpath:mybatis-config.xml"></property>--> <!-- 扫描entity包 使用别名 --> <property name="typeAliasesPackage" value="com.tianlh.entity"></property> <!-- 扫描sql配置文件:mapper需要的xml文件 --> <property name="mapperLocations" value="classpath:mapper/*.xml"></property> </bean> <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <!-- 给出需要扫描Dao接口包 --> <property name="basePackage" value="com.tianlh.dao"></property> </bean></beans>
BookDao.xml:
<?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="com.tianlh.dao.BookDao"> <!-- 接口式编程时: 1.namespace需要指定成接口的全类名 2.接口方名称需要和mapper的id一致 --> <resultMap id="BaseResultMap" type="com.tianlh.entity.Book"> <id column="book_id" property="bookId" jdbcType="INTEGER"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="number" property="number" jdbcType="INTEGER"/> </resultMap> <!-- 目的:为dao接口方法提供sql语句配置 --> <select id="queryById" parameterType="long" resultMap="BaseResultMap"> <!-- 具体的sql --> SELECT book_id, name, number FROM book WHERE book_id = #{bookId} </select></mapper>
jdbc.properties:
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=rootvalidationQuery=SELECT 1
Sql:
CREATE TABLE `book` ( `book_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '图书编号', `name` varchar(100) NOT NULL COMMENT '图书名称', `number` int(11) NOT NULL COMMENT '数量', PRIMARY KEY (`book_id`)) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='图书'INSERT INTO `book` (`book_id`, `name`, `number`)VALUES (1000, 'Java', 1), (1001, 'JSP', 1), (1002, 'Zookper', 1), (1003, 'Redis', 1)
- SSM搭建
- ssm搭建
- 搭建SSM
- SSM搭建
- ssm搭建
- SSM搭建
- SSM搭建
- SSM搭建
- SSM框架的搭建
- SSM框架搭建
- 使用Gradle搭建SSM
- SSM框架搭建
- SSM框架搭建
- SSM+Maven环境搭建
- SSM整合搭建
- SSM框架搭建
- ssm第一次搭建
- ssm项目搭建
- UVa 10368
- 71. Simplify Path (简化路径)
- Composer安装使用
- Android堆叠式布局实现
- eclipse loading org.eclipse 启动无响应 停留在Loading状态
- SSM搭建
- 壕!程序员摆25台iPhone X求婚 闺蜜1人1台
- C语言的下标运算与指针的关系
- 什么是vnc
- mysql中怎么查询出一周内,三个月内,半年内的数据
- 防止按钮过快的二次点击
- Pull模式下流计算频率与周期相关性的分析
- 全都上市了又能怎样?网贷一人功成万骨枯。。。
- Spring contextConfigLocation默认加载文件的位置