本文搭建的SSM框架,即Spring,Struts2,MyBatis。本次搭建采用了Maven对项目进行管理
1:建立maven的web项目
2:数据库中新建表,本文中,采用的是mysql数据库
3:进行配置文件的配置
此时,可关注以上配置文件,其中beans.xml是Spring的xml文件,mybatis.xml是Mybatis的配置,struts.xml是struts2的xml文件。generatorConfig是生成mapping,dao和domain的工具,稍后将做介绍。
beans.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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"> <!-- 扫描项目中的注解 --> <context:annotation-config /> <context:component-scan base-package="cn.wind" /> <aop:aspectj-autoproxy proxy-target-class="true" /> <!-- c3p0配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl"> <value><![CDATA[jdbc:mysql:///exm_mybatis?useUnicode=true&characterEncoding=UTF-8]]></value> </property> <property name="user" value="root" /> <property name="password" value="123456" /> <property name="checkoutTimeout" value="3000" /> <property name="maxPoolSize" value="3"></property> </bean> <!-- 创建SqlSessionFactory,同时指定数据源,整合mybatis,装配mapping文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations"> <list> <value>classpath:cn/wind/mapping/*.xml</value> </list> </property> <property name="configLocation" value="classpath:mybatis.xml"></property> </bean> <!-- 自动扫描 将Mapper接口生成代理注入到Spring,实现自动装配 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.wind.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <!-- 配置事务管理器 --> <!-- 如果spring与mybatis整合,就直接使用databaseoure的事务就可以了 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 利用aop实现事务的配置 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* cn..service.I*Service.*(..))" id="cut" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="cut" /> </aop:config> </beans>
mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties> <property name="dialect" value="oracle" /> </properties> <settings> <!--全局映射器启用缓存 --> <!--<setting name="logImpl" value="STDOUT_LOGGING"/> --> <setting name="cacheEnabled" value="true" /> <!--查询时,关闭关联对象即时加载以提高性能 --> <setting name="lazyLoadingEnabled" value="true" /> <!--设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 --> <setting name="aggressiveLazyLoading" value="false" /> <!--对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true" /> <!--允许使用列标签代替列名 --> <setting name="useColumnLabel" value="true" /> <!--允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 <setting name="useGeneratedKeys" value="true" /> --> <!--给予被嵌套的resultMap以字段-属性的映射支持 --> <setting name="autoMappingBehavior" value="FULL" /> <setting name="mapUnderscoreToCamelCase" value="true" /> <setting name="defaultExecutorType" value="SIMPLE" /> <!--数据库超过25000秒仍未响应则超时 --> <setting name="defaultStatementTimeout" value="25000" /> </settings> <typeAliases> </typeAliases> </configuration>
struts2.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 自动装配 --> <constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="onePackage" extends="json-default" namespace="/"> <action name="user" class="cn.wind.action.UserAction"> <result name="success">/jsps/succ.jsp</result> </action> </package> <!-- <include file="struts-demo.xml"></include> --> </struts>
4:利用mybatis-generator-core,全自动生成mapping,domain,dao。本文后面附带此工具,可进行下载使用。另外,generatorConfig.xml可参考如下。在mysql和oracle中均可使用。由于本次构建环境采用的是mysql,故将oracle的配置注释起来了
注:generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库驱动包位置 --> <classPathEntry location="D:\programfiles\.m2\repository\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar" /> <!-- <classPathEntry location="D:\mybatis-generator\ojdbc14.jar" /> --> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- 数据库链接URL、用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/exm_mybatis" userId="root" password="123456"> <!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ora10cq" userId="tap_sys" password="tap_sys"> --> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="cn.wind.domain" targetProject="Demo_SSM_1"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成的映射文件包名和位置 --> <sqlMapGenerator targetPackage="cn.wind.mapping" targetProject="Demo_SSM_1"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成DAO的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.wind.dao" targetProject="Demo_SSM_1"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 要生成那些表(更改tableName和domainObjectName就可以) --> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" /> </context> </generatorConfiguration>
除此之外,还需要oracle或者mysql的驱动包,亦可在本文后面下载
5:实现效果如下:
6:进行service的代码编写
IUserService.java
package cn.wind.service; import cn.wind.domain.User; public interface IUserService { int deleteByPrimaryKey(String id); int insert(User record); int insertSelective(User record); User selectByPrimaryKey(String id); int updateByPrimaryKeySelective(User record); int updateByPrimaryKey(User record); }
UserService.java
package cn.wind.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.wind.dao.UserMapper; import cn.wind.domain.User; // @Service("UserService")给实例化的UserService取名字为UserService @Service("UserService") public class UserService implements IUserService { // 完成自动装配的工作 // 通过 @Autowired的使用来消除 set ,get方法。 @Autowired UserMapper userMapper; @Override public int deleteByPrimaryKey(String id) { userMapper.deleteByPrimaryKey(id); return 0; } @Override public int insert(User record) { userMapper.insert(record); return 0; } @Override public int insertSelective(User record) { userMapper.insertSelective(record); return 0; } @Override public User selectByPrimaryKey(String id) { return userMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(User record) { userMapper.updateByPrimaryKeySelective(record); return 0; } @Override public int updateByPrimaryKey(User record) { userMapper.updateByPrimaryKey(record); return 0; } }
7:action
package cn.wind.action; import org.springframework.beans.factory.annotation.Autowired; import cn.wind.domain.User; import cn.wind.service.IUserService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven<User> { private static final long serialVersionUID = 1L; private User u = new User(); @Override public User getModel() { return u; } @Autowired IUserService userService; @Override public String execute() throws Exception { User user= userService.selectByPrimaryKey("1"); System.out.println("query success:"+user.getName()+","+user.getPwd()); return SUCCESS; } }
8:此时,框架搭建完毕,进行测试。
http://localhost:8080/Demo_SSM_1/user
可以在console查看到查询内容。
这只是简单demo,不再做其他扩展
相关推荐
本文将深入探讨如何在SSM框架下利用注解进行增删改查的开发。 首先,Spring框架是整个应用的核心,它负责管理Bean的生命周期和依赖注入。在注解式开发中,我们通常会使用`@Component`、`@Service`、`@Repository`和...
在这个基于注解的SSM CRUD项目中,开发者利用注解来简化配置,提高开发效率,并实现了RESTful API以及事务管理。 首先,Spring框架作为整个项目的中心,它提供依赖注入(DI)和面向切面编程(AOP)等功能。通过注解...
下面将详细介绍SSM框架全注解开发的相关知识点。 1. **Spring框架**: - **依赖注入(DI)**:Spring通过注解如`@Autowired`实现对象之间的依赖关系自动装配,使得代码更加灵活和松耦合。 - **AOP(面向切面编程...
总结来说,这个"ssm全注解整合项目"展示了如何在不依赖XML配置的情况下,利用Spring、Struts2和MyBatis的注解实现完整的项目集成。这种方式简化了配置,增强了代码的可读性,同时保持了SSM框架的强大功能。对于...
在实际项目开发中,使用SSM全注解框架能够简化配置,降低出错概率,提高开发效率。同时,由于注解的可读性强,代码更易于维护。不过,过度依赖注解可能导致代码过于分散,影响整体结构,因此在实践中应合理平衡配置...
本资料包将深入讲解如何将Shiro与SSM整合,以实现更高效、灵活的安全管理。 Shiro是一款轻量级的Java安全框架,它的主要优势在于其简洁的API和易于理解和使用的设计。Shiro提供了用户认证、权限授权、会话管理以及...
SSM-xml+注解整合SSM框架-《员工信息管理系统》-功能演示.mp4 ...主要利用xml配置问价+注解整合SSM框架,在此基础上实现一套crud。 前端没有使用模板,所以大道至简,主要是联系ssm框架的整合方法。
这个压缩包中的源代码提供了一个完整的SSM整合示例,内附注释,便于理解和学习。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP)框架,为应用提供了灵活的控制层。Spring框架允许开发者管理对象及其...
在本项目中,Spring会管理如Service、DAO等组件,通过@Autowired注解自动装配所需的依赖,减少代码中的硬编码。 2. **SpringMVC**:SpringMVC是Spring的Web模块,用于处理HTTP请求和响应。它负责接收前端发送的注册...
3. **MyBatis**:MyBatis是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,通过XML或注解方式配置和映射原生信息,使得开发者可以直接编写SQL语句,避免了JDBC的繁琐操作。 4. **IDEA集成**:IDEA是...
Mybatis是一个轻量级的持久层框架,它简化了数据库操作,通过XML或注解方式配置和映射SQL语句,实现了SQL与Java代码的解耦。在用户管理中,Mybatis可以方便地进行增删查改操作,如添加用户、删除用户、查找用户信息...
在本项目中,“SSM框架实现WebSocket即时通讯”是指利用SSM框架来构建一个支持实时通信的聊天系统,允许用户进行私聊和群聊。WebSocket是一种在客户端和服务器之间建立长连接的协议,它可以提供全双工通信,使得数据...
SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,主要用来构建基于Java的企业级应用程序,尤其是数据访问层。...通过这些文件,开发者可以理解并学习如何在实际项目中应用SSM框架实现CRUD操作。
本文将详细解析如何在Eclipse环境下,通过注解方式集成SSM框架,并通过源码分析加深理解。 一、Spring框架 Spring是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,极大地简化了...
在SSM中,MyBatis主要负责数据库交互,通过XML或注解的方式定义SQL语句。它与Spring的集成可以实现无痛的事务管理。 4. **代码反转(Code First)**:MyBatis的代码反转功能,也称为逆向工程,允许开发者根据数据库...
在注解版中,我们不再需要XML配置文件来声明bean,而是可以直接在类上使用`@Component`,在方法上使用`@Autowired`来实现bean的自动装配。例如,一个服务类可以标记为`@Service`,对应的DAO类可以标记为`@Repository...
SSM+Redis 实现Session共享是现代Web应用中常见的技术组合,主要目的是在分布式系统中保持用户Session的一致性。SSM是指Spring、Spring MVC和MyBatis这三大Java Web开发框架的组合,而Redis则是一种高性能的键值存储...
### SSM框架实现批量删除知识点解析 #### 一、概述 在SSM(Spring + SpringMVC + MyBatis)框架下实现批量删除是一项常见且实用的功能。它可以帮助开发者高效地处理数据表中的多条记录,减少用户操作次数,提高...
`mybatis`则负责数据持久层操作,它通过XML或注解的方式定义SQL语句,并与Spring整合实现DAO层的事务管理。 前端部分,`HTML`用于创建页面结构,`CSS`负责样式设计,而`jQuery`是一个强大的JavaScript库,简化了DOM...