DBUtils与BeanUtils

1.DBUtils 

官方文档    https://commons.apache.org/proper/commons-dbutils/examples.html

1)依赖

<dependency>
    <groupId>commons-dbutils</groupId>
    <artifactId>commons-dbutils</artifactId>
    <version>1.7</version>
</dependency>

2)创建表

create table  persons(
id  int primary key  auto_increment,
name  varchar(10),
age int
)engine=InnoDB default charset=utf8

 3)导入jar

<dependency>
			<groupId>commons-dbutils</groupId>
			<artifactId>commons-dbutils</artifactId>
			<version>1.7</version>
</dependency>

 4)DBUtils的基本用法

public class DBUtilsTest {
	public static void main(String[] args) throws ClassNotFoundException, IOException, SQLException {
		Connection connection = PrepareStatementTest.getConnection("config.properties");
		connection.setAutoCommit(false);
		//其中可以放入数据源去定义,那么会相应的少去con的设置和管理
		QueryRunner queryRunner = new QueryRunner();
		// 增加
		// String sql="insert into persons(name,age) values(?,?)";
		// int execute = queryRunner.execute(connection, sql, "丽丽","23");
		// 删除
		// String sql ="delete from persons where id=?";
		// int execute = queryRunner.execute(connection, sql, 2);
		// 修改
		// String sql ="update persons set name=? ,age=? where id=?";
		// int execute = queryRunner.execute(connection, sql, "苗苗",10,1);
		// queryRunner.update(conn, sql, params)
		// System.out.println(execute);
		// 添加
		// String sql="insert into persons(name,age) values(?,?)";
		// 返回值是 ResultSetHandler<T>的值
		// queryRunner.insert(connection, sql, new ResultSetHandler<String>() {
		// @Override
		// public String handle(ResultSet rs) throws SQLException {
		// System.out.println("插入数据");//输出插入数据
		// return null;
		// }
		// },"丽丽",22);
		String sql = "select * from persons  where id>=1";
		// 把返回值装入person对象 或者返回第一条装入对象
		// Person query = queryRunner.query(connection,sql,new
		// BeanHandler<>(Person.class));
		// 查询的所有对象放入集合
		//返回值是 ResultSetHandler<T>的值
		List<Person> query = queryRunner.query(connection, sql, new BeanListHandler<>(Person.class));
		System.out.println(query);
		connection.commit();
		DbUtils.rollbackAndClose(connection);
		/* ResultSetHandler<T>的子类,
		 * ArrayHandler :将ResultSet中第一行的数据转化成对象数组
		 * ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
		 * BeanHandler :将ResultSet中第一行的数据转化成类对象
		 * BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
		 * ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
		 * KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
		 * MapHandler :将ResultSet中第一行的数据存成Map映射
		 * MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
		 * ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object 
		 */
	}
}

 2.BeanUtils 

 官方文档:https://commons.apache.org/proper/commons-beanutils/

1)依赖

   <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.3</version>
    </dependency>
 

2)基本使用

package cn.test;

import org.apache.commons.beanutils.BeanUtils;
import org.junit.Before;
import org.junit.Test;

import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;

public class BeanUtilsTest {
    private Person person=null;

    @Before
    public  void  init(){
         this.person = new Person("张三", "23");
    }
  //setProperty
    @Test//给指定对象bean的指定name属性赋值为指定值value,不能存在什么也不发生
    public  void   testSetProperty() throws InvocationTargetException, IllegalAccessException {
        BeanUtils.setProperty(person, "name", "李四");//不支持内部类的反射
        System.out.println(person);
    }
  //getProperty
    @Test//获取指定对象bean指定name属性的值,不存在就报错
    public  void   testGetProperty() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
        String name = BeanUtils.getProperty(person, "name");//不支持内部类的反射
        System.out.println(name);
    }
  //copyProperties
    @Test//将对象orig的属性值赋值给对象dest对象对应的属性
    public  void   testCopyProperties() throws InvocationTargetException, IllegalAccessException {
        Person p = new Person();
        BeanUtils.copyProperties(p , person);
        System.out.println(person);
        System.out.println(p);
    }
  //populate
    @Test//将一个Map集合中的数据封装到指定对象bean中
    public  void   testPopulate() throws InvocationTargetException, IllegalAccessException {
        Person p = new Person();
        HashMap<String, String> map = new HashMap<>();
        map.put("name", "张三");
        map.put("adress", "qwe");
        BeanUtils.populate(p, map);
        System.out.println(p);
    }
public class Person {
    private   String  name;
    private   String   age;
..........

 3)添加类型转换器

public static<T> T     populate( T  t, Map  map) throws InvocationTargetException, IllegalAccessException {
        DateConverter dateConverter = new DateConverter();//创建日期格式转换器对象
        dateConverter.setPattern("yyyy-MM-dd");//设置格式
        ConvertUtils.register(dateConverter, Date.class);//注册
        BeanUtils.populate(t,map);
        return  t;
   }

 具有的转换器还有如下

posted @ 2018-10-14 22:23  fatale  阅读(400)  评论(0编辑  收藏  举报