JdbcTemplate

JdbcTemplate是Spring框架对JDBC的封装

package study.jdbctemplate;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import study.datasoure.Druid;
import study.jdbc.Emp;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * JdbcTemplae 是spring 框架的jdbc封装工具对象
 *
 * 使用步骤:
 * 1、导包
 * 2、创建JdbcTemlplate对象
 * 3、操作数据库
 */
public class JdbcTemplateDemo {
    public static void main(String[] args) throws Exception {
        //1、创建JdbcTemlplate对象
        JdbcTemplate jt = new JdbcTemplate(getConn());
        //2、调用方法

        //更新数据库
        String up = "update emp set mgr = ? where id = ?";
        //update(sql,参数1,参数2,...)
        int update = jt.update(up, 100, 1002);
        System.out.println(update);//1


        //查询数据库
        // queryForMap() 方法查询的结果集长度只能是1条
        String se = "select * from emp where id = ?";
        Map<String, Object> smap = jt.queryForMap(se, 1002);
        System.out.println(smap.get("ename"));

        // queryForList() 方法查询的结果集长度可以是多条数据
        String se1 = "select * from emp where id in (?,?)";
        List<Map<String, Object>> maps = jt.queryForList(se1, 1002, 1003);
        System.out.println(maps);

        //查询所有记录
        //query() 方法接受2个参数 ,将查询的结果封装为指定的对象
        String se2 = "select * from emp";
        //自定义实现数据封装对象
        /*List<Emp> query = jt.query(se2, new RowMapper<Emp>() {
            @Override
            public Emp mapRow(ResultSet res, int i) throws SQLException {
                Emp emp = new Emp();
                int id = res.getInt("id");
                String ename = res.getString("ename");
                int job_id = res.getInt("job_id");
                int mgr = res.getInt("mgr");
                Date joindate = res.getDate("joindate");
                double salary = res.getDouble("salary");
                double bonus = res.getDouble("bonus");
                int dept_id = res.getInt("dept_id");

                emp.setId(id);
                emp.setEname(ename);
                emp.setJob_id(job_id);
                emp.setMgr(mgr);
                emp.setJoindate(joindate);
                emp.setSalary(salary);
                emp.setBonus(bonus);
                emp.setDept_id(dept_id);
            }
        });*/
        //也可以使用 预定义的封装
        //BeanPropertyRowMapper(sql,new BeanPropertyRowMapper<类型>(类型.class))
        List<Emp> query = jt.query(se2, new BeanPropertyRowMapper<Emp>(Emp.class));
        System.out.println(query);

        //查询总记录数
        //queryForObject(sql,object.class) 该方法一般执行聚合查询
        String se3 = "select count(id) from emp";
        Object o = jt.queryForObject(se3,Long.class);
        System.out.println(o);


    }

    /**
     * 获取 Druid 连接池对象
     * @return
     * @throws Exception
     */
    public static DataSource getConn() throws Exception {
        Properties pro = new Properties();
        InputStream is = Druid.class.getClassLoader().getResourceAsStream("druid.properties");
        pro.load(is);
        DataSource ds = DruidDataSourceFactory.createDataSource(pro);

        return ds;
    }
}

仅有一条评论

添加新评论