`
yijiesuifeng
  • 浏览: 19098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

全注解实现SSM

阅读更多

本文搭建的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,不再做其他扩展

  • 大小: 25 KB
  • 大小: 3.9 KB
  • 大小: 4.8 KB
  • 大小: 2.4 KB
分享到:
评论

相关推荐

    基于ssm实现注解式开发(增删改查)

    本文将深入探讨如何在SSM框架下利用注解进行增删改查的开发。 首先,Spring框架是整个应用的核心,它负责管理Bean的生命周期和依赖注入。在注解式开发中,我们通常会使用`@Component`、`@Service`、`@Repository`和...

    基于注解的ssm crud的项目

    在这个基于注解的SSM CRUD项目中,开发者利用注解来简化配置,提高开发效率,并实现了RESTful API以及事务管理。 首先,Spring框架作为整个项目的中心,它提供依赖注入(DI)和面向切面编程(AOP)等功能。通过注解...

    ssm框架全注解开发

    下面将详细介绍SSM框架全注解开发的相关知识点。 1. **Spring框架**: - **依赖注入(DI)**:Spring通过注解如`@Autowired`实现对象之间的依赖关系自动装配,使得代码更加灵活和松耦合。 - **AOP(面向切面编程...

    ssm全注解整合项目 附有对应的 xml文件的注释

    总结来说,这个"ssm全注解整合项目"展示了如何在不依赖XML配置的情况下,利用Spring、Struts2和MyBatis的注解实现完整的项目集成。这种方式简化了配置,增强了代码的可读性,同时保持了SSM框架的强大功能。对于...

    idea ssm 全注解框架

    在实际项目开发中,使用SSM全注解框架能够简化配置,降低出错概率,提高开发效率。同时,由于注解的可读性强,代码更易于维护。不过,过度依赖注解可能导致代码过于分散,影响整体结构,因此在实践中应合理平衡配置...

    Shiro与SSM整合(内含详细文档介绍)

    本资料包将深入讲解如何将Shiro与SSM整合,以实现更高效、灵活的安全管理。 Shiro是一款轻量级的Java安全框架,它的主要优势在于其简洁的API和易于理解和使用的设计。Shiro提供了用户认证、权限授权、会话管理以及...

    SSM-xml+注解整合SSM框架-《员工信息管理系统》-功能演示.mp4

    SSM-xml+注解整合SSM框架-《员工信息管理系统》-功能演示.mp4 ...主要利用xml配置问价+注解整合SSM框架,在此基础上实现一套crud。 前端没有使用模板,所以大道至简,主要是联系ssm框架的整合方法。

    ssm整合源代码框架,内附注释

    这个压缩包中的源代码提供了一个完整的SSM整合示例,内附注释,便于理解和学习。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP)框架,为应用提供了灵活的控制层。Spring框架允许开发者管理对象及其...

    ssm实现注册登陆

    在本项目中,Spring会管理如Service、DAO等组件,通过@Autowired注解自动装配所需的依赖,减少代码中的硬编码。 2. **SpringMVC**:SpringMVC是Spring的Web模块,用于处理HTTP请求和响应。它负责接收前端发送的注册...

    SSM框架实现登录注册功能完整代码

    3. **MyBatis**:MyBatis是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,通过XML或注解方式配置和映射原生信息,使得开发者可以直接编写SQL语句,避免了JDBC的繁琐操作。 4. **IDEA集成**:IDEA是...

    SSM实现用户注册登录以及增加删除修改用户

    Mybatis是一个轻量级的持久层框架,它简化了数据库操作,通过XML或注解方式配置和映射SQL语句,实现了SQL与Java代码的解耦。在用户管理中,Mybatis可以方便地进行增删查改操作,如添加用户、删除用户、查找用户信息...

    SSM框架实现WebSocket即时通讯

    在本项目中,“SSM框架实现WebSocket即时通讯”是指利用SSM框架来构建一个支持实时通信的聊天系统,允许用户进行私聊和群聊。WebSocket是一种在客户端和服务器之间建立长连接的协议,它可以提供全双工通信,使得数据...

    ssm实现增删改查

    SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,主要用来构建基于Java的企业级应用程序,尤其是数据访问层。...通过这些文件,开发者可以理解并学习如何在实际项目中应用SSM框架实现CRUD操作。

    ssm注解集成

    本文将详细解析如何在Eclipse环境下,通过注解方式集成SSM框架,并通过源码分析加深理解。 一、Spring框架 Spring是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,极大地简化了...

    maven整合ssm实现增删改查,

    在SSM中,MyBatis主要负责数据库交互,通过XML或注解的方式定义SQL语句。它与Spring的集成可以实现无痛的事务管理。 4. **代码反转(Code First)**:MyBatis的代码反转功能,也称为逆向工程,允许开发者根据数据库...

    SSM注解版实例

    在注解版中,我们不再需要XML配置文件来声明bean,而是可以直接在类上使用`@Component`,在方法上使用`@Autowired`来实现bean的自动装配。例如,一个服务类可以标记为`@Service`,对应的DAO类可以标记为`@Repository...

    ssm+redis 实现session共享

    SSM+Redis 实现Session共享是现代Web应用中常见的技术组合,主要目的是在分布式系统中保持用户Session的一致性。SSM是指Spring、Spring MVC和MyBatis这三大Java Web开发框架的组合,而Redis则是一种高性能的键值存储...

    ssm批量删除

    ### SSM框架实现批量删除知识点解析 #### 一、概述 在SSM(Spring + SpringMVC + MyBatis)框架下实现批量删除是一项常见且实用的功能。它可以帮助开发者高效地处理数据表中的多条记录,减少用户操作次数,提高...

    基于SSM框架实现简单的登录注册功能【数据库+源码】

    `mybatis`则负责数据持久层操作,它通过XML或注解的方式定义SQL语句,并与Spring整合实现DAO层的事务管理。 前端部分,`HTML`用于创建页面结构,`CSS`负责样式设计,而`jQuery`是一个强大的JavaScript库,简化了DOM...

Global site tag (gtag.js) - Google Analytics