ssh三大框架,三层架构 整合测试!完整分页代码,JdbcTemplate等测试,存储过程调用,留着以后复习吧

下载地址:http://download.csdn.net/detail/liangrui1988/5760453

下载之后是MyEclipse项目,需要的存存储过程代码:

--存储过程 包头
create or replace package myPack is
type c_cursors is ref cursor;
procedure deUser(v_id long);--删除
procedure getAllUser(myCursor out myPack.c_cursors);--查询
end myPack;

--存储过程 包体
create or replace package body myPack as
 /****************删除*******************/
procedure deUser(v_id long) is
  e_table exception;
  v_sql varchar2(200); 
  begin
  if v_id is null then
    raise e_table;
    end if;
    v_sql:='delete  from fuck where id=:1';
     execute immediate v_sql using v_id;
    exception 
      when e_table then
        dbms_output.put_line('参数不能为空!');
    end;
 /****************查询*******************/
 procedure getAllUser(myCursor out myPack.c_cursors) as
  v_sqlS varchar2(200);
  begin    
    v_sqlS:='select * from fuck';        
    open myCursor for v_sqlS;
  end;
end myPack;
   
------------------------


select * from fuck





dao实现类代码:

package accp.dao.imple;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.sql.DataSource;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.object.MappingSqlQuery;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import acc.util.PageBean;
import accp.bean.Fuck;
import accp.dao.UserDao;

public class UserDaoImple /*extends HibernateDaoSupport*/ implements UserDao {

	
	/**
	 * sql 原生sql支持
	 * 
	 */
	private JdbcTemplate jdbcTemplate;
	private SimpleJdbcTemplate simpleJdbcTemplate;
	private DataSource dataSource;
	private SimpleJdbcCall jdbcCall;
	
	
	//通过注入得得到DataSoruce再强转
	@SuppressWarnings("deprecation")
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);//jdbcTemplate 方式查询
		
		this.dataSource= dataSource;//mappingSqlQuery方式
		
		//使用Simple 方式 更好
		this.simpleJdbcTemplate=new SimpleJdbcTemplate(dataSource);
		jdbcTemplate.setResultsMapCaseInsensitive(true);
		//创建simplejdbccall
		this.jdbcCall=new SimpleJdbcCall(this.jdbcTemplate)
		              .withProcedureName("myPack.getAllUser")
		              .withoutProcedureColumnMetaDataAccess()
		              .returningResultSet("fucks",
		            		  ParameterizedBeanPropertyRowMapper
		            		  .newInstance(Fuck.class));
	}

	/**
	 * MappingSqlQuery 类  SQL查询
	 */
	
   

	@SuppressWarnings("unchecked")
	public Fuck login(Fuck u) {
	/*	List<Fuck> list=this.getHibernateTemplate().find(
				"from Fuck fu where fu.name=? and fu.password=? ",
				new Object[]{u.getName(),u.getPassword()});*/
				
			  /*Session session=sessionFactory.getCurrentSession();
				Query query=session.createQuery("from Fuck fu where fu.name=? and fu.password=? ");
				query.setString(0, u.getName());
				query.setString(1, u.getPassword());
				List<Fuck> list=query.list();*/
		
		//sql
		Fuck uu;
		
		String sql="select id,name,password from fuck where name=? and password=?";
		uu=this.jdbcTemplate.queryForObject(sql, 
				new Object[]{u.getName(),u.getPassword()},
				new RowMapper(){
                    //查询并将结果记录为一个简单的数据模型。
					public Object mapRow(ResultSet rs, int rowNum)
							throws SQLException {
						Fuck fuck=new Fuck();
						fuck.setId(rs.getLong("id"));
						fuck.setName(rs.getString("name"));
						fuck.setPassword(rs.getString("password"));
						
						return fuck;
					}
			
		});
				
		return uu;
	}


	public int getCount(Fuck u) {
		
		/*查询一个简单的数字
		 * String sql="select count(*) from fuck where name=? and password=?";
		int i=jdbcTemplate.queryForInt(sql,new Object[]{u.getName(),u.getPassword()});
		*/
		
		/*String sql="select count(*) from fuck where name=? and password=?";
		int i=jdbcTemplate.queryForInt(sql,new Object[]{u.getName(),u.getPassword()});
		*/
		
		return 0;
	}

	
	public Fuck getFuck(int ids){
		//方式一 使用jdbcTemplate
		 MappingSql mappingSqlQuery =new MappingSql(dataSource);
		 Object[] parms = new Object[1];
		    parms[0] = ids;
		    //执行sql 传入参数 返回查询结果
		    List customers = mappingSqlQuery.execute(parms);
		    if (customers.size() > 0) {
		        return (Fuck) customers.get(0);
		    }
		    else {
		        return null;
		    }
		
		
		/*
		 * 方式二 使用SimpleJdbcTemplate
		 */
		/*String sql="select id, name,password FROM fuck WHERE id = ?";
	
		ParameterizedRowMapper<Fuck> prm=new ParameterizedRowMapper<Fuck>(){
			public Fuck mapRow(ResultSet rs, int arg1) throws SQLException {
			Fuck fuck=new Fuck();
			fuck.setId(rs.getLong("id"));
			fuck.setName(rs.getNString("name"));
			fuck.setPassword(rs.getString("password"));
			return fuck;
			}
			
		};
		@SuppressWarnings("deprecation")
		Fuck fus=this.simpleJdbcTemplate.queryForObject(sql, prm, new Object[]{ids});
		return fus;*/
	}

	public void updateF(Fuck u) {
		jdbcTemplate.update("update fuck set name=?,password=? where id=?",
				new Object[]{u.getName(),u.getPassword(),u.getId()});		
	}
	
	


	public void saveF(Fuck u) {
		jdbcTemplate.update("insert into fuck values(user_id.nextval,?,?)",
				new Object[]{u.getName(),u.getPassword()});
		
	}

/**
 * 内部类	继承MappingSqlQuery类
 * @author liangrui
 *
 */

static class MappingSql extends MappingSqlQuery 
{
	//构造方法传入DataSource 数据源对象,调用declarParamter 传入需要的SQL值的内型
	 public MappingSql(DataSource ds){
   	  super(ds, "SELECT id, name,password FROM fuck WHERE id = ?");
         super.declareParameter(new SqlParameter("id", Types.INTEGER));
         compile();

	}

	 
	 /**
	  * 这个对象实列后 调用execute()方法 传入Object[]数组参数 它初执行,
	  * 并反回resultSet 结果集
	  */
	@Override
	protected Object mapRow(ResultSet rs, int id) throws SQLException {
		   Fuck cust = new Fuck();
	        cust.setId(Long.parseLong(rs.getObject("id").toString()));
	        cust.setName(rs.getString("name"));
	        cust.setPassword(rs.getString("password"));
	        return cust;

	}
}

public List<Fuck>  getShowList() {
	List<Fuck> f;
	f=jdbcTemplate.queryForObject("select * from fuck", 
	                               new RowMapper<List<Fuck>>(){

	public List<Fuck>  mapRow(ResultSet rs, int arg1) throws SQLException {
		List<Fuck> listF=new ArrayList<Fuck>();
		while(rs.next()){
			System.out.println("封装中............");
			Fuck f=new Fuck();				
			f.setId(rs.getLong("id"));
			f.setName(rs.getString("name"));
			f.setPassword(rs.getString("password"));
			listF.add(f);
		}
		
		return listF;
		}
	});
	
	return f;
	
}


/**
 * 存储过程删除用户
 */
public void deleteF(Fuck u) {
	jdbcTemplate.update("call mypack.deuser(?)",
			new Object[]{Long.valueOf(u.getId())});	
	
}

public Fuck getProcedure() {
	
	return null;
}
//------------存储过程  游标 获取全部用户---------------------------------
public List<Fuck> getProcShowList() {
	Map map=jdbcCall.execute(new HashMap<String,Object>(0));
	System.out.println("size: "+map.size());
	return (List<Fuck>) map.get("fucks");
}


//---------------------------分页处理-------------------------------------------
public List<Fuck> getPageShow(PageBean pb) {
	System.out.println("pb.getOrader(): "+pb.getOrader() +" 当前页: "+pb.getCurrentPage());
	
	 String sql="select * from (select t.*,rownum r from fuck t " +
			"where rownum<=? order by ? )where r>? ";
	List<Fuck> lists=null;
	lists=jdbcTemplate.queryForObject(sql,
			//设置参数
			new Object[]{
			pb.getCurrentPage()*pb.getPageSize(),//当前页*每页显示的行数=最大数据截止的行数
			pb.getOrader(),
			(pb.getCurrentPage()-1)*pb.getPageSize()},
			//获取数据,并反回对象
			new RowMapper<List<Fuck>>(){
		
				public List<Fuck> mapRow(ResultSet rs, int arg1)
						throws SQLException {
					
					List<Fuck> list=new ArrayList<Fuck>();
					while(rs.next()){
					Fuck fuck=new Fuck();
					fuck.setId(rs.getLong("id"));
					fuck.setName(rs.getString("name"));
					fuck.setPassword(rs.getString("password"));
					list.add(fuck);
					}
					return list;
				}
		
	});
	
	//pb.setData(lists);
	return lists;
}

public int getFuckTotalRow() {
	int total=jdbcTemplate.queryForInt("select count(*) from fuck");
	return total;
}
	



}


spring 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:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"	
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	                    http://www.springframework.org/schema/aop
	                    http://www.springframework.org/schema/aop/spring-aop-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/context
	                    http://www.springframework.org/schema/context/spring-context-3.0.xsd"
	                
>
<!--  配制数据源
<bean id="myDataResource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url"  value="jdbc:oracle:thin:@localhost:1521:ABC"/>
<property name="username" value="tenement"/>
<property name="password" value="rui"/>

<property name="initialSize" value="3"/>
<property name="maxActive" value="500"/>
<property name="maxIdle" value="3"/>
<property name="minIdle" value="1"/>
</bean>
-->

<!-- 配制数据池 -->
 <bean id="myDataResource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/SSHnewPool"/>
  </bean>

<!-- 配制原生sql查询方式    注入dataSource -->
<bean id="UserDao" class="accp.dao.imple.UserDaoImple">
        <property name="dataSource" ref="myDataResource"/>
    </bean>

<!-- session cofnig 
<bean id="mySession" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataResource"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
</value>
</property>
<property name="mappingResources">
<list>
<value>/accp/bean/Fuck.hbm.xml</value>
</list>
</property>
</bean>
-->

<!-- 指定sessionfatory 的事务   
<bean id="myThransactions" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySession"/>
</bean>
-->


<!-- 事务方法  规则
<tx:advice id="txAdvice" transaction-manager="myThransactions">
    <tx:attributes> -->
    <!-- 这些开头的方法 加上 不要读锁
      <tx:method name="get*" read-only="true"/>
       <tx:method name="find*" read-only="true"/>
       <tx:method name="search*" read-only="true"/>
       <tx:method name="query*" read-only="true"/>
      -->
      <!-- 这些开头的方法 设为REQUIRED 如果存在一个事务 ,则支看当前事务。  如果没有则开启一个新事务                       
                        设为supports时  如果存在一个事务 ,则支看当前事务。如果没有则安非事务处理 
      <tx:method name="add*" propagation="REQUIRED"/>
      <tx:method name="del*" propagation="REQUIRED"/>
      <tx:method name="update*" propagation="REQUIRED"/>
      <tx:method name="do*" propagation="REQUIRED"/>
      <tx:method name="*" propagation="REQUIRED" read-only="true"/>
    </tx:attributes>
  </tx:advice>
 -->

<!-- aop 切入点
<aop:config>
<aop:pointcut expression="execution(* accp.dao..*.*(..))" id="myPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/>
</aop:config>
-->

<!-- 
<bean id="hiber" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="mySession"></property>
</bean>
 -->
 
<!-- 配置事务 
<bean id="myTransaction" class="accp.dao.imple.UserDaoImple">
<property name="sessionFactory" ref="mySession"/>
</bean>
-->

<bean id="serverInterface" class="accp.service.imple.ServiceImple">
<property name="userDao" ref="UserDao"/>
</bean>

<bean id="userAction" class="accp.action.UserAction">
<property name="userService" ref="serverInterface"/>
</bean>

</beans>

struts xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default1" extends="struts-default, spring-default">

<action name="user_*" class="userAction"  method="{1}">
<result name="success">ok.jsp</result>
<result name="TestConut">testConut.jsp</result>
<result name="TestMappingSql">testConut.jsp</result>
<result name="saveOK" type="redirectAction">user_showList.action</result>
<result name="deleteOK" type="redirectAction">user_showList.action</result>
<result name="updateSave">update.jsp</result>
<result name="showListr">userList.jsp</result>
<result name="pageShow">pageUSer.jsp</result>

</action>
</package>

</struts>    



  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值