`
yuanfen860913
  • 浏览: 119891 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

spring两种方法实现操作对象化

阅读更多

package servlet;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;
import javax.sql.DataSource;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.MappingSqlQuery;
import org.springframework.jdbc.object.SqlUpdate;

import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type;

import bean.User;
/**
*
* @author zwc
*
*/
@SuppressWarnings("serial")
public class OperateSpring extends HttpServlet {
private static Logger logger = Logger.getLogger(OperateSpring.class);
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
out.println("<title>" + this.getClass().getName() + "</title>");

String path = getServletContext().getRealPath("/");
logger.info("真实路径:" + path);
ApplicationContext ac = new FileSystemXmlApplicationContext(path + "\\WEB-INF\\classes\\applicationContext.xml");

//XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(path + "\\WEB-INF\\classes\\applicationContext.xml"));

JdbcTemplate jdbcTemplate = (JdbcTemplate) ac.getBean("jdbcTemplate");
DataSource ds = (DataSource) ac.getBean("dataSource");

SelectUsers su = new SelectUsers(ds);
List<User> list = su.getAllUser();
for(Iterator<User> i = list.iterator();i.hasNext();){
User user = i.next();
out.print(user.getName() + "<br>");

这里的查找功能,

简单,O(∩_∩)O哈哈~


}
}
}

查询时候:
class SelectUsers extends MappingSqlQuery<User>{
public SelectUsers(DataSource ds){
setDataSource(ds);
setSql("select * from t_user");
compile();
}
@Override
protected User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setSex(rs.getInt("sex"));
return user;
}
public List<User> getAllUser(){
Object[] params = new Object[]{};
return execute(params);
}
}

更新时候;
class InsertUser extends SqlUpdate{
public InsertUser(DataSource ds){
setDataSource(ds);
setSql("insert into t_user(id,name,sex) value(?,?,?)");
declareParameter(new SqlParameter(Types.INTEGER));
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.INTEGER));
compile();
}
public int InsertByUser(User user){
Object[] params = new Object[]{
user.getId(),
user.getName(),
user.getSex()
};
return update(params);
}
}

对应的,applicationContext为:

<?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:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
default-lazy-init="true">
<!-- 从外部加载属性文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:/application.properties</value>
</property>
</bean>
<!-- application listener init-->
<bean id="myApplicationListener" class="listener.MyApplicationListenerImp">
</bean>
<!-- 国际化 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="i18n_message"/>
</bean>

<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />

<!-- Connection Pooling Info -->
<property name="initialSize" value="${dbcp.initialSize}" />
<property name="maxActive" value="${dbcp.maxActive}" />
<property name="maxIdle" value="${dbcp.maxIdle}" />
<property name="defaultAutoCommit" value="false" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>



<bean id="user" class="bean.User">
<!--
用构造函数给bean赋值
<constructor-arg index="0" value="zwc" type="java.lang.String"/>
<constructor-arg index="1" value="1" type="java.lang.Integer"/>
-->
<!--
用property 给bean赋值
<property name="id" value="10010"/>
<property name="name" value="zwc"/>
<property name="sex" value="1"/>
-->
<property name="childs">
<map>
<entry key="zhangsan">
<value>${jdbc.url}</value>
</entry>
<entry key="lisi" value="${jdbc.driver}"/>
<entry key="wangwu" value="${jdbc.username}"/>
</map>
</property>
</bean>
<bean id="myLog" class="commons.MyLog"></bean>
<bean id="listener" class="commons.MyLogListener"></bean>


</beans>

分享到:
评论

相关推荐

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    在 Spring 中,AOP 的实现主要依赖于代理模式,有两种代理方式:JDK 动态代理和 CGLIB 动态代理。 JDK 动态代理是基于接口的,它要求被代理的目标对象必须实现至少一个接口。Spring 使用 `java.lang.reflect.Proxy`...

    Spring  AOP实现方法大全

    Spring提供了两种After Advice:`AfterReturningAdvice`和`AfterThrowingAdvice`。前者在方法正常返回时调用,后者在方法抛出异常时调用。 3. **Around Advice**:这是最强大的Advice类型,因为它允许你在方法执行...

    实例化Spring bean的两种工厂方法

    本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...

    spring3.0两种事务管理配置

    Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...

    Spring AOP面向切面三种实现

    有两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理适用于接口实现类,它通过反射机制在运行时生成实现了目标接口的代理类;而CGLIB代理则适用于无接口或非接口实现类,它通过字节码技术创建目标类的子类来实现...

    Spring中的方法注入

    2. **方法注入的两种形式** - **setter方法注入:** 这是最常见的方法注入形式,通过setter方法来设置对象的属性值。例如,如果我们有一个`Service`类,Spring可以通过调用`setDao(Dao dao)`方法来注入DAO对象。 -...

    初探spring aop内部实现 java

    Spring AOP的实现主要依赖于两种技术:动态代理和AspectJ。对于接口,Spring使用Java动态代理(JDK Proxy)创建代理对象;而对于类,Spring则使用CGLIB库生成子类代理。这两种方式都是在运行时生成代理对象,从而在...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    代理对象在调用方法时会触发InvocationHandler的invoke()方法,从而可以在这个方法中实现对方法调用的拦截。JDK动态代理要求被代理类必须实现一个接口,代理类会实现相同的接口。 Spring框架中的AOP模块使用了动态...

    spring中注解的实现原理

    通过实现`BeanFactoryPostProcessor`或`BeanPostProcessor`接口,你可以扩展Spring的行为,使其在处理自定义注解时执行特定的操作。 总结来说,Spring中注解的实现原理涉及到元注解的定义、注解处理器的运行、Bean...

    spring aop实例annotation方法实现

    Spring AOP支持两种主要的通知类型:方法前(Before)、方法后(After)以及环绕通知(Around)。这些通知可以通过在方法上添加特定的注解来实现,例如`@Before`、`@After`和`@Around`。 1. `@Before`注解:在目标...

    spring事务操作试验

    在Spring中,事务管理分为两种模式:声明式事务管理和编程式事务管理。声明式事务管理通过配置元数据(如XML或注解)来控制事务边界,而编程式事务管理则通过TransactionTemplate或PlatformTransactionManager接口...

    spring配置实例化后执行的初始化方法比对

    spring配置对象实例化后执行的方法,两种实现比对,通过InitializingBean接口,并实现arterPropertiesSet()方法;或者通过applicationContext.xml配置init-method属性

    两种实现JDBC添加、删除、修改操作的方法对比

    两种实现JDBC添加、删除、修改操作的方法对比 在本文中,我们将讨论两种实现JDBC添加、删除、修改操作的方法对比。这些方法可以用来实现添加、删除、修改操作的共用方法,分为两个方法:一个是设置...

    SpringIOC和AOP实现机制模拟

    Spring支持运行时织入和编译时织入两种方式。 6. **AspectJ**:Spring支持使用AspectJ进行更强大的AOP编程,包括注解驱动的切面和类型安全的元数据表达式。 通过这些机制,Spring的IOC和AOP不仅简化了对象的管理和...

    Spring AOP实现机制

    Spring AOP主要通过两种方式实现:JDK动态代理和CGLIB代理。 - **JDK动态代理**: - 当目标对象实现了至少一个接口时,Spring会使用JDK的java.lang.reflect.Proxy类创建一个代理对象。 - 代理对象在调用实际方法...

    JavaEE spring半自动实现AOP代理

    在Spring中,AOP代理有两种实现方式:JDK动态代理和CGLIB代理。JDK代理适用于实现了接口的类,而CGLIB代理则适用于未实现接口的类。 1. **JDK动态代理**: - Spring通过实现`java.lang.reflect.InvocationHandler`...

    spring依赖注入的实现原理

    Bean工厂负责创建对象,维护对象之间的关系,并进行初始化和销毁操作。 2. **XML配置** 在早期版本的Spring中,通常使用XML配置文件来定义Bean及其依赖关系。例如: ```xml ``` 这段XML表示`Service`类...

    Spring AOP的底层实现技术

    Spring AOP基于两种代理机制实现:JDK动态代理和CGLIB代理。JDK动态代理适用于实现了接口的目标对象,通过反射机制创建一个代理类来拦截方法调用。而CGLIB是在运行时动态生成一个目标类的子类,从而实现对方法的...

    Spring+myBatis 整合两种方法,一种是dao 整合,一种是mapper接口代理

    本教程将详细介绍如何将Spring与MyBatis进行整合,包括两种不同的方法:DAO整合和Mapper接口代理。 首先,我们需要搭建基本的项目环境。项目结构通常包括`.classpath`、`.project`等IDE配置文件,`src`源代码目录,...

Global site tag (gtag.js) - Google Analytics