Spring整合Spring MVC与MyBatis实现新闻发布系统
Spring精品教程资料:3.MyBatis与Spring的整合

完成时间:20分钟
7/33
学员操作—根据名称查询供应商信息 练习 需求说明
在上一练习基础上增加按照供应商名称模糊查询供应商 信息的功能
要求:直接注入SqlSessionTemplate实现
MapperFactoryBean
MapperScannerConfigurer递归扫描基准包下所有接口,若它们 在SQL映射文件中定义过,则动态注册为MapperFactoryBean, 如此即可批量产生映射器实现类
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
分析 配置数据源 配置SqlSessionFactoryBean
使用SqlSessionTemplate实现数据库的操作
编写业务逻辑代码并测试
演示示例1:实现Spring对MyBatis的整合
6/33
学员操作—实现供应商表的查询操作 练习 需求说明
在超市订单系统中实现供应商表的查询操作
<property name="basePackage" value="cn.smbms.dao" />
</bean>
指定扫描的基准包
演示示例3:使用MapperScannerConfigurer注入映射器
11/33
小结
MapperScannerConfigurer 与@Autowired注解或@Resource注解配合 使用,自动创建映射器实现并注入给业务组件,能够最大限度地减 少DAO组件与业务组件的编码和配置工作
基于SSM框架的新闻发布管理系统设计与实现

基于SSM框架的新闻发布管理系统设计与实现一、本文概述随着信息技术的飞速发展和互联网的普及,新闻发布管理系统成为了传媒行业不可或缺的重要工具。
新闻发布管理系统能够高效地处理新闻信息的发布、编辑、审核、管理等工作,极大地提高了新闻传播的效率和准确性。
在此背景下,基于SSM(Spring、SpringMVC、MyBatis)框架的新闻发布管理系统应运而生,以其高效、稳定、易扩展的特性,成为了新闻发布管理系统的新宠。
本文旨在详细阐述基于SSM框架的新闻发布管理系统的设计与实现过程。
我们将对SSM框架进行简要介绍,并阐述其在新闻发布管理系统中的应用优势。
然后,我们将从需求分析、系统设计、数据库设计、系统实现等几个方面,对新闻发布管理系统的整个生命周期进行详细剖析。
我们将对系统进行功能测试和性能测试,以验证系统的稳定性和性能。
通过本文的阐述,读者可以深入了解基于SSM框架的新闻发布管理系统的设计与实现过程,掌握相关技术和方法,为实际应用提供参考和借鉴。
本文也希望能对新闻发布管理系统的研究和发展起到一定的推动作用。
二、系统需求分析随着信息技术的快速发展,新闻发布管理系统在各类企事业单位、新闻机构以及个人自媒体中的应用越来越广泛。
新闻发布管理系统的主要功能是对新闻资讯进行发布、编辑、管理、查询等操作,以满足不同用户对新闻信息的不同需求。
因此,开发一个高效、稳定、易用的新闻发布管理系统具有重要的现实意义。
功能需求:系统应提供新闻资讯的发布、编辑、删除、查询等基本功能,同时支持对新闻的分类管理,方便用户根据不同的分类快速查找感兴趣的新闻资讯。
系统还应提供用户权限管理功能,对不同用户设置不同的访问权限,保证新闻信息的安全性和准确性。
性能需求:系统应具备良好的性能,能够支持大量用户同时访问和操作,保证系统的稳定性和可靠性。
同时,系统还应具备快速响应的能力,用户在进行各项操作时,系统应能够及时响应并返回结果。
安全性需求:系统应具备良好的安全性,能够防止非法用户的访问和操作,保护新闻信息的安全性和完整性。
Mybatis使用之SpringMVC整合

Mybatis使用之SpringMVC整合一:简介主要记录Mybatis如何与SpringMVC框架整合。
Mybatis真正与Spring结合更能体现出其灵活、便捷的特点。
数据源交由Spring 管理、事务交由Spring管理、配置文件、映射文件交由Spring加载、初始化。
映射接口交由Spring注入等等。
大大简化了Mybatis代码、配置量。
Mybatis只需关心与数据库打交道、处理数据与实体类之间的映射即可。
二:环境介绍主要是Mybatis3.2.8与Spring4.1.0之间的整合。
项目是使用Maven搭建的项目。
搭建步骤:2.1 创建Maven项目2.2 加入Mybatis+SpringMVC所需jar包依赖2.3 配置Mybatis配置文件2.4 配置Spring配置文件2.5 配置SpringMVC配置文件2.6 配置web.xml文件2.7 配置Mybatis映射文件2.8 编写与Mybatis映射文件对应的映射接口2.9 配置日志资源文件2.10 完成其他java代码编写、测试三:具体步骤及说明3.1 创建Maven项目这里使用的IntellijIDEA 14、集成Maven插件、其他的IDE如Eclipse只需安装一下插件就行。
3.2 加入Mybatis+SpringMVC所需jar包依赖具体如下面pom.xml文件所列:<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.star.coding.passion</groupId><artifactId>star-coding-passion</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properti es><java-version>1.7</java-version><org.springframework-version>4.1.0.RELEASE</org.springframework-version><org.springframework.security-version>3.2.0.RELEASE</org.springframework.security-version><org.aspectj-version>1.8.1</org.aspectj-version><org.slf4j-version>1.6.1</org.slf4j-version><org.mybatis>3.2.8</org.mybatis><org.mybatis.spring >1.2.2</org.mybatis.spring><org.aspectj>1.7.4</org.aspectj>< common.dbcp>1.4</common.dbcp><mysql.version>5.1.34</ mysql.version></properties><dependencies><!-- Spring --><dependency><groupId>org.springframework</groupId>< artifactId>spring-core</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-web</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-oxm</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-tx</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-aop</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-context-support</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>or g.springframework</groupId><artifactId>spring-test</artifactId><version>${org.springframework-version}</version></dependency><!--aspectJ--><dependency><groupId>org.aspectj</groupId><artifactId> aspectjweaver</artifactId><version>1.8.5</version></depend ency><!-- Mybatis--><dependency><groupId>org.mybatis</groupId><artifactId >mybatis</artifactId><version>${org.mybatis}</version></de pendency><!--Mybatis Spring--><dependency><groupId>org.mybatis</groupId><artifactId >mybatis-spring</artifactId><version>${org.mybatis.spring}</version>< /dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mys ql-connector-java</artifactId><version>${mysql.version}</version></depen dency><!-- 连接池 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>${common.dbcp}</version></depe ndency><!-- Logging --><dependency><groupId>org.slf4j</groupId><artifactId>slf 4j-api</artifactId><version>${org.slf4j-version}</version></dependency><dependency><groupId>or g.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${org.slf4j-version}</version><scope>runtime</scope></dependency>< dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${org.slf4j-version}</version><scope>runtime</scope></dependency>< !-- Servlet --><dependency><groupId>org.apache.tomcat</groupId><art ifactId>tomcat-servlet-api</artifactId><version>7.0.30</version><scope>provided</ scope></dependency><dependency><groupId>javax.servlet.j sp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</sco pe></dependency><dependency><groupId>javax.servlet.jsp.j stl</groupId><artifactId>jstl-api</artifactId><version>1.2</version><exclusions><exclusio n><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId></exclusion></exclusions></dependency><!-- Jackson JSON Processor --><dependency><groupId>com.fasterxml.jackson.core</grou pId><artifactId>jackson-databind</artifactId><version>2.4.1</version></dependency ><!-- File Upload --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version></dependency ><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.0.1</version></dependency></dep endencies></project>3.3 配置Mybatis配置文件位于Maven的资源文件目录下:resources/mybatis/mybatis-conf ig.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- 命名空间 --><typeAliases><package name="org.star.coding.passion.web. model"/></typeAliases><plugins><!--分页插件、只拦截映射文件中sql语句id以ByPage结尾的sql语句、仅支持mysql和Oracle 分页--><plugin interceptor="org.star.coding.passion.web.interceptor. PageInterceptor"><property name="dialect" value="mysql"/>< /plugin></plugins><!-- 映射map --><mappers/></configuration>3.4 配置Spring配置文件主要是Spring与Mybatis集成、以及Spring事务以及连接池的配置、同时使用扫描加载除Controller注解标识的bean <?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSch ema-instance"xmlns:context="/schema/context" xmlns:p="/schema/ p"xmlns:tx="/schema/tx" xmlns:aop="/schema/aop"xsi:schemaL ocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/tx /schema/tx/spring-tx.xsd/schema/aop /schema/aop/spring-aop.xsd"><!-- 引入资源文件--><context:property-placeholder location="classpath:properties/jdbc-config.properties"/><context:component-scan base-package="org.star.coding.passion"><context:exclude-filter type="annotation" expression="org.springframework.stere otype.Controller"/></context:component-scan><!-- common dbcp 数据库连接池配置信息--><bean id="dataSource" class="mons.dbcp.Ba sicDataSource" p:url="${jdbc.url}"p:driverClassName="${jdbc.dr iverClassName}" p:username="${ername}" p:password=" ${jdbc.password}"p:minEvictableIdleTimeMillis="${jdbc.minEvict ableIdleTimeMillis}" p:removeAbandoned="${jdbc.removeAban doned}"p:maxActive="${jdbc.maxActive}" p:maxIdle="${jdbc.m axIdle}" p:initialSize="${jdbc.initialSize}"p:minIdle="${jdbc.minId le}" p:maxWait="${jdbc.maxWait}" p:validationQuery="${jdbc.va lidationQuery}"p:timeBetweenEvictionRunsMillis="${jdbc.timeB etweenEvictionRunsMillis}" p:testOnBorrow="${jdbc.testOnBorr ow}"p:testOnReturn="${jdbc.testOnReturn}" p:testWhileIdle="${ jdbc.testWhileIdle}"p:removeAbandonedTimeout="${jdbc.remo veAbandonedTimeout}"/><!-- spring与mybatis整合读取所有mybatis配置文件--><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSe ssionFactoryBean"p:dataSource-ref="dataSource"p:configLocation="classpath:mybatis/mybatis-config.xml"p:mapperLocations="classpath:mybatis/mapper/*.x ml"/><!-- configLocation为mybatis属性 mapperLocations为所有mapper--><!-- spring与mybatis整合配置,扫描所有mapper 下mybatis配置文件、用动态代理模式来获取所有mybatis的xml文件中namespace指向的接口的代理实例。
Spring整合Spring MVC与MyBatis实现新闻发布系统

24.2 数据库设计
权限表(powers)的字段说明如表24-7所示。 创建数据表后,设计数据表之间的关系,如图24-4所示。
10
24.3 系统环境搭建
在第21章的21.8小节中,以用户登录为例详细介绍了Spring整合 Spring MVC与MyBatis,读者可参照完成新闻发布系统的框架搭建。 当然,读者也可以直接将21.8小节创建的项目springmvc_ssm复制一 份并重新命名为news,再导入到MyEclipse中。为避免部署重复,需 要修改项目的部署名称。修改过程如下:在MyEclipse中右击项目 news,依次选择“Properties MyEclipse Deployment Assembly”,将Web Context Root修改为“news”即可。然后将 jackson-annotations-2.6.0.jar、jackson-core-2.6.0.jar和jacksondatabind-2.6.0.jar这三个jar包复制到项目的WebRoot\WEB-INF\lib目 录中,用于支持Spring MVC实现自动Json格式数据转换。
16
24.6 创建DAO接口及动态提供类
在接口NewsinfoDAO中声明如下方法:
// 根据条件查询新闻总数 Integer count(Map<String, Object> params); // 分页动态查询 List<Newsinfo> selectByPage(Map<String, Object> params); // 根据主题获取前5条新闻 List<Newsinfo> selectTop5ByTid(int tid); // 根据新闻编号获取新闻对象 Newsinfo selectById(int id); // 添加新闻 void save(Newsinfo ni); // 修改新闻 void edit(Newsinfo ni); // 删除新闻 void deleteById(int id);
SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse-Maven版)

SSI框架搭建(Maven版) SpringMVC4.1.2+Spring4.1.2+Mybatis3.3.0编号:SSI-SMVC3-S4-I3版本:V1.0级别:公开编写时间:2016-06-24目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)1.4 Maven简介 (1)2 准备工作 (2)2.1 安装maven工具 (2)2.2 配置maven环境变量 (2)2.3 配置maven仓库 (2)2.4 Eclipse配置maven信息 (3)3 搭建Maven版的SSI项目 (4)3.1 创建项目 (4)3.2 配置pom文件 (5)3.3 配置web.xml (11)3.4 配置config.properties (13)3.5 配置mybatis-config.xml (14)3.6 配置spring-dataSource.xml (15)3.7 配置spring-mvc.xml (18)3.8 配置spring.xml (19)3.9 配置log4j.properties (20)3.10 创建实体model (20)3.11 创建实例化dao (22)3.12 创建业务服务service (24)3.13 创建控制层controller (26)3.14 页面代码 (31)3.14.1 login.css (31)3.14.2 login.html (32)3.14.3 login.js (34)3.14.4 common.js (35)3.14.5 其他文件 (39)3.15 启动项目 (39)3.15.1 编译项目 (39)3.15.2 启动项目(jetty容器) (39)3.15.3 系统测试 (40)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。
springmvc+spring+mybatis整合

springmvc+spring+mybatis整合首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。
然后我们就细细的一步一步来整合。
1 创建一个Web项目。
2 导入Mybatis3、Spring4、SpringMVC4、连接数据库(我使用的数据库是mysql)的jar包。
我所用的包:spring-websocket-4.2.0.RELEASE.jar3 创建Mybatis3、Spring4、SpringMVC4、连接数据库的配置文件。
4 配置web.xml1<?xml version="1.0" encoding="UTF-8"?>2<web-app version="2.5"3xmlns="/xml/ns/javaee"4xmlns:xsi="/2001/XMLSchema-instance" 5xsi:schemaLocation="/xml/ns/javaee6/xml/ns/javaee/web-app_2_5.xsd">78<!-- 告知javaEE容器,有哪些内容需要添加到上下文中去--> 9<context-param>10<param-name>contextConfigLocation</param-name> 11<param-value>12/WEB-INF/classes/applicationContext.xml,13<!-- /WEB-INF/classes/mvc-servlet.xml -->14</param-value>15</context-param>161718<!-- 加载LOG4J -->19<context-param>20<param-name>log4jConfigLocation</param-name> 21<param-value>/WEB-INF/log4j.xml</param-value>22</context-param>2324<context-param>25<param-name>log4jRefreshInterval</param-name> 26<param-value>60000</param-value>27</context-param>2829<!-- 动态设置项目的运行路径-->30<context-param>31<param-name>webAppRootKey</param-name>32<param-value>ssm.root</param-value>33</context-param>3435<!-- 配置静态资源-->36<servlet-mapping>37<servlet-name>default</servlet-name>38<url-pattern>/static/*</url-pattern>39</servlet-mapping>404142<!-- 配置springmvc的前端控制器-->43<servlet>44<servlet-name>mvc</servlet-name>45<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>46<!-- 默认情况下:DispatcherServlet会寻找WEB-INF下,命名规范为[servlet-name]-servlet.xml文件。
spring+springmvc+mybatis组合总结
spring+springmvc+mybatis组合总结springmvc+spring+mybatis整合:1. 拷贝所需jar2. 创建spring配置⽂件(beans.xml)3. 配置数据源<bean id="dataSource" class="mons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://127.0.0.1:3306/test"></property><property name="username" value="root"></property><property name="password" value=""></property></bean>4.创建SqlSessionFactory实例:<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 指定数据源 --><property name="dataSource" ref="dataSource"/><!-- 指定mybatis的配置⽂件 --><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!--映射接⼝扫描mapper包下的所有xml⽂件 mapper是个包名应该是在main测试的时候才使⽤--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.liu.mapper"></property></bean>5. 配置事务<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>6. 配置事务的传播特性<tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="find*" read-only="true"/><tx:method name="get*" read-only="true"/><tx:method name="query*" read-only="true"/><tx:method name="add*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="del*" propagation="REQUIRED"/></tx:attributes></tx:advice>7. 配置AOP<!-- 配置AOP --><aop:config><!--配置切⾯必须要有空格 *空格 ssmy 否则会报错--><aop:config><aop:pointcut expression="execcution(*空格 ssmy.service.impl.*.*(..))" id="pointcut"/><aop:advisor advice-ref="txadvice" pointcut-ref="pointcut"/></aop:config>9. 配置DispatcherServlet<!-- 配置Spring核⼼控制器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>10. 创建springmvc-servlet.xml配置⽂件:<!-- 注解扫描器 --><context:component-scan base-package="com.liu"/><!-- 配置试图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean><import resource="classpath:beans.xml"/>。
Mybatis整合Spring
Mybatis整合Spring根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持。
因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求。
下面就将通过Mybatis-Spring来整合Mybatis跟Spring的用法做一个简单的介绍。
MapperFactoryBean首先,我们需要从Mybatis官网上下载Mybatis-Spring的jar包添加到我们项目的类路径下,当然也需要添加Mybatis的相关jar包和Spring的相关jar包。
我们知道在Mybatis的所有操作都是基于一个SqlSession的,而SqlSession是由SqlSessionFactory来产生的,SqlSessionFactory又是由SqlSessionFactoryBuilder来生成的。
但是Mybatis-Spring是基于SqlSessionFactoryBean的。
在使用Mybatis-Spring的时候,我们也需要SqlSession,而且这个SqlSession是内嵌在程序中的,一般不需要我们直接访问。
SqlSession也是由SqlSessionFactory来产生的,但是Mybatis-Spring给我们封装了一个SqlSessionFactoryBean,在这个bean里面还是通过SqlSessionFactoryBuilder来建立对应的SqlSessionFactory,进而获取到对应的SqlSession。
通过SqlSessionFactoryBean我们可以通过对其指定一些属性来提供Mybatis的一些配置信息。
所以接下来我们需要在Spring的applicationContext配置文件中定义一个SqlSessionFactoryBean。
spring+spring mvc+mybits框架整合
主要介绍三大框架的整合,至于环境的搭建以及项目的创建可以参考其他资料。
这次整合主要用到两个配置文件:spring-mybatis.xm,包含spring和mybatis的配置文件,还有个是spring-mvc.xml的配置文件,此外有两个资源文件:jdbc.propertis和log4j.properties。
完整的目录结构如下图:本框架中用到的所有jar包都在源码中。
本测试项目中用到的是sqlserver数据库,MyEclipse 8.6和apache-tomcat-7.0.41下来逐一介绍配置文件:1、spring-mybatis.xml这个文件就是用来完成spring和mybatis的整合的。
这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库,注释也很详细<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.1.xsd/schema/context/schema/context/spring-context-3.1.xsd/schema/mvc/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描 --><context:component-scan base-package="com.myProcess.study"/><!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"value="classpath:jdbc.properties"/> </bean><bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"value="${driver}"/><property name="url"value="${url}"/><property name="username"value="${username}"/><property name="password"value="${password}"/><!-- 初始化连接大小 --><property name="initialSize"value="${initialSize}"></property><!-- 连接池最大数量 --><property name="maxActive"value="${maxActive}"></property><!-- 连接池最大空闲 --><property name="maxIdle"value="${maxIdle}"></property><!-- 连接池最小空闲 --><property name="minIdle"value="${minIdle}"></property><!-- 获取连接最大等待时间 --><property name="maxWait"value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource"ref="dataSource"/><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations"value="classpath:com/myProcess/study/mapping/*.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage"value=".hnust.dao"/><property name="sqlSessionFactoryBeanName"value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"ref="dataSource"/></bean></beans>2、log4j.propertieslog4j.rootLogger=INFO,Console,File#定义日志输出目的地为控制台log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.out#可以灵活地指定日志输出格式,下面一行是指定具体的格式yout = org.apache.log4j.PatternLayoutyout.ConversionPattern=[%c]-%m%n#文件大小到达指定尺寸的时候产生一个新的文件log4j.appender.File = org.apache.log4j.RollingFileAppender#指定输出目录log4j.appender.File.File = logs/ssm.log#定义文件最大大小log4j.appender.File.MaxFileSize = 10MB# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志log4j.appender.File.Threshold = ALLyout = org.apache.log4j.PatternLayoutyout.ConversionPattern =[%p][%d{yyyy-MM-ddHH\:mm\:ss}][%c]%m%n3、spring-mvc.xml主要是自动扫描控制器,视图模式,注解的启动这三个<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.1.xsd/schema/context/schema/context/spring-context-3.1.xsd/schema/mvc/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --><context:component-scan base-package="com.myProcess.study.web"/><!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConvert er"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAd apter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter"/><!-- JSON转换器 --></list></property></bean><!-- 定义跳转的文件的前后缀,视图模式配置--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个可用的url地址 --><property name="prefix"value="/WEB-INF/jsp/"/><property name="suffix"value=".jsp"/></bean><!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --><bean id="multipartResolver"class="monsMultipartResolver"> <!-- 默认编码 --><property name="defaultEncoding"value="utf-8"/><!-- 文件大小最大值 --><property name="maxUploadSize"value="10485760000"/><!-- 内存中的最大值 --><property name="maxInMemorySize"value="40960"/></bean></beans>4、web.xml这里面对spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。
mybatis-spring整合
MyBatis 2章MyBatis与Spring整合1、技术目标∙为项目添加Spring框架∙使用Spring在业务逻辑层对DAO完成依赖注入∙使用Spring在业务逻辑层进行事务处理2、什么是Spring框架?Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。
框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架Spring框架由如下7个模块构成:模块说明:组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
每个模块的功能如下:∙核心容器:核心容器提供Spring 框架的基本功能。
核心容器的主要组件是BeanFactory,它是工厂模式的实现。
BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开∙Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。
Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能∙Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。
所以,可以很容易地使Spring 框架管理的任何对象支持AOP。
Spring AOP 模块为基于Spring 的应用程序中的对象提供了事务管理服务。
通过使用Spring AOP,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中∙Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。
异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。
Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构∙Spring ORM:Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO、Hibernate 和iBatis SQL Map。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24.6 创建DAO接口及动态提供类
在接口AdminDAO中声明如下方法:
// 根据登录名和密码查询用户 public Admin selectByLoginNameAndPwd(@Param("loginName") String loginName, @Param("loginPwd") String loginPwd); // 根据管理员id获取管理员对象及关联的功能集合 Admin selectById(Integer id);
public int addTopic(Topic topic);
void modify(Topic topic);
public List<Topic> getAllTopic();
在接口NewsinfoService中声明如下方法:
// 前台分页获得新闻
List<Newsinfo> findNewsinfo(Newsinfo newsinfo,Pager pager);
第24章 Spring整合Spring MVC与 MyBatis实现新闻发布系统
目录
1 系统概述及需求分析 2 数据库设计 3 系统环境搭建 4 系统配置文件 5 创建实体类 6 创建DAO接口及动态提供类 7 创建Service接口及实现类 8 开发新闻发布系统各功能模块
24.1 系统概述及需求分析
11
24.3 系统环境搭建
新闻发布系统的目录结构如图24-5所示,其中com.news.pojo包用于存放 实体类, com.news.dao包用于存放数据访问层接口, com.news.dao.provider包用于存放构建动态SQL语句的类, com.news.service包用于存放业务逻辑层接口,com.news.service.impl包用 于存放业务逻辑层接口的实现类, com.news.controller包用于存放控制器 类,com.news.interceptor包用于存放登录权限验证的拦截器类。
本章实现的是一个简易的新闻发布系统,主要分为两个部分 :前台与后台。在前台,未登录用户可以通过选择主题,分页 查看该主题的所有新闻标题,单击新闻标题可浏览新闻详细内 容;登录用户还可以发表评论。在后台,管理员可以对主题和 新闻进行管理,具体包括新闻管理、主题管理、评论管理和用 户管理。管理员在后台添加的新闻,前台的新闻列表会自动更 新。
16
24.6 创建DAO接口及动态提供类
在接口NewsinfoDAO中声明如下方法:
// 根据条件查询新闻总数 Integer count(Map<String, Object> params); // 分页动态查询 List<Newsinfo> selectByPage(Map<String, Object> params); // 根据主题获取前5条新闻 List<Newsinfo> selectTop5ByTid(int tid); // 根据新闻编号获取新闻对象 Newsinfo selectById(int id); // 添加新闻 void save(Newsinfo ni); // 修改新闻 void edit(Newsinfo ni); // 删除新闻 void deleteById(int id);
List<Newsinfo> selectTop5ByTid(int tid);
Newsinfo selectById(t<Newsinfo> findNewsinfoForBackstage(Newsinfo newsinfo,Pager
pager);
Integer count(Map<String, Object> params);
9
24.2 数据库设计
权限表(powers)的字段说明如表24-7所示。 创建数据表后,设计数据表之间的关系,如图24-4所示。
10
24.3 系统环境搭建
在第21章的21.8小节中,以用户登录为例详细介绍了Spring整合 Spring MVC与MyBatis,读者可参照完成新闻发布系统的框架搭建。 当然,读者也可以直接将21.8小节创建的项目springmvc_ssm复制一 份并重新命名为news,再导入到MyEclipse中。为避免部署重复,需 要修改项目的部署名称。修改过程如下:在MyEclipse中右击项目 news,依次选择“Properties MyEclipse Deployment Assembly”,将Web Context Root修改为“news”即可。然后将 jackson-annotations-2.6.0.jar、jackson-core-2.6.0.jar和jacksondatabind-2.6.0.jar这三个jar包复制到项目的WebRoot\WEB-INF\lib目 录中,用于支持Spring MVC实现自动Json格式数据转换。
21
24.7 创建Service接口及实现类
在接口TopicService中声明如下方法:
List<Topic> selectAllTopic();
List<Topic> findTopic(Topic topic,Pager pager);
Integer count(Map<String, Object> params);
12
24.4 系统配置文件
Spring使用的配置文件为applicationContext.xml,Spring MVC使用的配置文件为springmvc.xml,这些配置文件的含义在 第21章的21.8小节中已具体介绍过,由于篇幅,在此不再赘述。
13
24.5 创建实体类
在com.news.pojo包中,依次创建实体类Topic.java、 Newsinfo.java、Comment.java、Users.java、Admin.java、 Functions.java、Powers.java、Pager.java和TreeNode.java 。
public void addNewsinfo(Newsinfo ni);
void modify(Newsinfo ni);
void removeNewsinfoById(int id);
22
24.7 创建Service接口及实现类
在接口CommentService中声明如下方法:
public void addComment(Comment comment); List<Comment> findComment(Comment comment, Pager pager); Integer count(Map<String, Object> params); void removeCommentByNid(int nid); public List<Comment> findCommentForBackstage(Comment comment, Pager pager); void modifyStatus(String ids); void deleteCommentByIds(String ids);
(1) 主题表(topic):用于记录新闻主题。 (2) 新闻信息表(newsinfo):用于记录新闻相关信息。 (3) 新闻评论表(comment):用于记录新闻评论信息。 (4) 用户信息表(users):用于记录新闻前台的用户信息。 (5) 管理员信息表(admin):用于记录管理员的信息。 (6) 系统功能表(functions):用于记录系统可供使用的功能菜单。 (7) 权限表(powers):用于记录各管理员所拥有的系统功能。
15
24.6 创建DAO接口及动态提供类
在接口TopicDAO中声明如下方法:
// 根据id查询新闻主题 Topic selectById(int id); // 查询所有新闻主题 List<Topic> selectAllTopic(); // 分页动态查询 List<Topic> selectByPage(Map<String, Object> params); // 根据条件动态查询主题总记录数 Integer count(Map<String, Object> params); // 添加主题 int save(Topic topic); // 修改主题 void edit(Topic topic);
17
24.6 创建DAO接口及动态提供类
在接口CommentDAO中声明如下方法:
// 添加评论 void save(Comment comment); // 根据新闻编号,分页动态查询该新闻的评论 List<Comment> selectByPage(Map<String, Object> params); // 根据条件查询评论总数 Integer count(Map<String, Object> params); // 根据新闻id删除评论 void deleteByNid(int nid); // 评论审核 void updateState(@Param("ids") String ids); // 删除评论 void deleteByIds(@Param("ids") String ids);
3
24.1 系统概述及需求分析
新闻发布系统中普通用户和管理员的用例图分别如图24-1和 图24-2所示。
4
24.1 系统概述及需求分析
根据系统需求分析,可以得到系统的模块结构,如图24-3所 示。
5
24.2 数据库设计
数据库设计是系统设计中非常重要的一个环节,数据是设计 的基础,直接决定系统的成败。如果数据库设计不合理、不完 善,将在系统开发中,甚至到后期的维护时,引起严重的问题 。根据系统需求,创建了7张表,如下所示: