使用dbutils插入数据到mysql(中文乱码解决)

1.DBUtils封装了对JDBC的操作,简化了JDBC操作,可以减少代码量。

2.Dbutils三个核心功能

  1. QueryRunner中提供对sql语句操作(update,query)
  2. ResultSetHandler接口,用于定义select操作后,封装结果集
  3. DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法


3.QueryRunner类

QueryRunner类提供数据源(连接池),DButils底层自动维护连接connection。

1.update(String sql, Object... params)执行更新数据(可变参数)

2.query(String sql, ResultSetHandler rsh,Object... params)执行查询(可变参数)


4.ResultSetHandler 结果集处理类

  • ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值(只获取一条数据)。
  • ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
  • BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
  • BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中。
  • 其他详见dbutils API。

5.代码实现

package lesson15_jdbc;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.util.List;
import java.sql.SQLException;
import java.util.Arrays;


public class jdbc_FZ3 {
    //单个查询 ArrayHandler
    public static void chaXun(){
        try{
            //连接数据库
            ComboPooledDataSource ds=new ComboPooledDataSource();
            //创建QueryRnner
            QueryRunner qr=new QueryRunner(ds);
            //sql语句
            String sql="select * from 1_mytable1";
            //query执行sql语句
            Object[] query=qr.query(sql,new ArrayHandler());
            //执行结果
            System.out.println(Arrays.toString(query));
            ds.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    //多个查询 (ArrayListHandler)
    public static void chaXunAll(){
        try {
            //连接到数据库
            ComboPooledDataSource ds = new ComboPooledDataSource();
            //创建QueryRunner
            QueryRunner qr = new QueryRunner(ds);
            //sql语句
            String sql = "select * from 1_mytable1";
            //query执行sql语句
            List query = qr.query(sql, new ArrayListHandler());
            //查询结果
            for (Object[] item : query){
                System.out.println(Arrays.toString(item));
            }
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    //封装到javabean中
    public static void chaxun2(){
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            QueryRunner qr = new QueryRunner(ds);
            String sql = "select * from 1_mytable1";
            Info query = qr.query(sql, new BeanHandler<>(Info.class));
            String name=query.getName();
            int age=query.getAge();
            String gender=query.getGender();
            System.out.println(name+"->"+age+"->"+gender);
            ds.close();
        }catch (SQLException e){
            e.printStackTrace();
        }

    }

    //多个查询 (BeanListHandler)
    public static void chaXunAll2(){
        try{
        ComboPooledDataSource ds=new ComboPooledDataSource();
        QueryRunner qr=new QueryRunner(ds);
        String sql="select * from 1_mytable1";
        List query=qr.query(sql,new BeanListHandler<>(Info.class));
        for (Info item:query){
            String name=item.getName();
            int age = item.getAge();
            String gender=item.getGender();
            System.out.println(name+"->"+age+"->"+gender);
        }
        ds.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    //插入
    public static void insert(){
        ComboPooledDataSource ds=new ComboPooledDataSource();
        QueryRunner qr=new QueryRunner(ds);
        String sql="insert into 1_mytable1(name,age,gender) values(?,?,?)";
        try{
            int i=qr.update(sql,"三少爷",45,"男");
            System.out.println(i);
        }catch (SQLException e){
         e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        chaXun();
        insert();
    }
}
5.输入中文乱码问题,设置java文件编码,sql与jdbc连接的编码,sql数据库的编码统一为utf-8即可解决。

你可能感兴趣的:(使用dbutils插入数据到mysql(中文乱码解决))