JAVA通用工具类(二)

3.TxQueryRunner 

TxQueryRunner类是common-dbutils下QueryRunner类的子类,用来简化JDBC操作。TxQueryRunner类内部使用了JdbcUtils.getConnection()类来获取连接对象,以及使用JdbcUtils.releaseConnection()关闭连接。

public class TxQueryRunner {
	/**
	 * 测试update方法,用来执行insert,update,delete语句
	 * @throws Exception 
	 */
	@Test
	public void testUpdate() throws Exception{
		String sql = "insert into t_person(pid,pname,age,sex) values(?,?,?,?)";
		Object[] params = {"1","p1",1,"男"};
		
		QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();//没有给对象提供连接池
		qr.update(sql,params);//执行sql也不提供连接,它内部会使用jdbcUtils来获取连接
	}
	

	/**
	 * 使用事务
	 * @throws Exception
	 */
	@Test
	public void testUpdate2() throws Exception{
		try {
			JdbcUtils.beginTransaction();//开启事务
			
			//多次操作
			String sql = "insert into t_person(pid,pname,age,sex) values(?,?,?,?)";
			QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();
			
			Object[] params = {"2","p2",2,"男"};
			qr.update(sql,params);
			
			if (false) {
				throw new Exception();
			}

			params =new Object[] {"3","p3",3,"男"};
			qr.update(sql,params);
			
			JdbcUtils.commitTransaction();//提交事务
			
		} catch (SQLException e) {
			try {
				JdbcUtils.rollbackTransaction();//事务回滚
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			throw e;
		}

	}
	/**
	 * 测试查询方法
	 * jdbc查询的结果是ResultSet
	 * QueryRunner查询的结果是通过ResultSet映射的数据
	 * (QueryRunner第一步是执行select,得到ResultSet,然后把ResultSet转化为其它类型)
	 * 通过转换结果:
	 * javaBean:把结果集疯转到javabean中
	 * map:把结果集封装到map中
	 * 把结果集封装到object中(object是单行单列)
	 * @throws Exception
	 */
	
	/*
	 * javaBean:把结果集疯转到javabean中
	 */
	@Test
	public void testQuery() throws Exception{
		String sql = "select * from t_person where pid = ?";
		QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();
		
		Person p = qr.query(sql, new BeanHandler<Person>(Person.class),2);
		System.out.println(p);
	}
	
	/*
	 * list
	 */
	@Test
	public void testQuery2() throws Exception{
		String sql = "select * from t_person";
		QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();
		
		List<Person> list = qr.query(sql, new BeanListHandler<Person>(Person.class));
		System.out.println(list);
	}
	/*
	 * map:把结果集封装到map中
	 */
	@Test
	public void testQuery3() throws Exception{
		String sql = "select * from t_person where pid = ?";
		QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();
		
		Map<String, Object> map = qr.query(sql, new MapHandler(),2);
		System.out.println(map);
	}
	
	
	/*
	 * MaplistHander
	 */
	@Test
	public void testQuery4() throws Exception{
		String sql = "select * from t_person";
		QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();
		
		List<Map<String, Object>> maplist = qr.query(sql, new MapListHandler());
		
		System.out.println(maplist);
	}
	
	/*
	 * ScalarHander,把单行单列的结果集封装到object中
	 */
	@Test
	public void testQuery5() throws Exception{
		String sql = "select count(*) from t_person";
		QueryRunner qr = new cn.itcast.jdbc.TxQueryRunner();
		
		Object obj = qr.query(sql, new ScalarHandler());
		Number number = (Number)obj;//无论哪种类型,一定是number类型
		int cnt = number.intValue();
		
		System.out.println(cnt);
	}

4.MailUtils

MailUtils是用来发邮件的小工具,底层使用JavaMail完成,所以它这件事mail.jar和activaion.jar。

@Test
	public void send() throws MessagingException, IOException{
		/**
		 * 1.登录邮件服务器
		 * 2.创建邮件对象(发件人,收件人,主题,正文)
		 * 3.发送(需要session和邮件对象)
		 */
		Session session = MailUtils.createSession("smtp.i63.com", "itcast_cxf", "itcastitcast");
		Mail mail = new Mail("itcast_cxf@163.com", "445482812@qq.com", "测试邮件一封", "<a href='http://www.baidu.com'>百度</a>");
		MailUtils.send(session, mail);
	}

测试未通过。

5.EncodingFilter

EncodingFilter用来处理请求编码问题。

我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding(“utf-8”)方法来设计编码;如果是GET请求,我们需要自己手动来处理编码问题。如果我们使用了EncodingFilter,那么就处理了POST和GET请求的编码问题。

<filter>
	<filter-name>EncdoingFilter</filter-name>
	<filter-class>cn.itcast.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>EncdoingFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值