zoukankan      html  css  js  c++  java
  • Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)

    JdbcTemplateDemo2.java 

    package helloworld.jdbcTemplate;
    
    import org.springframework.jdbc.core.JdbcTemplate;
    
    import java.sql.*;
    import java.util.List;
    
    /**
     * 功能:通过JdbcTemplate实现查询操作
     * 查询结果需要自己封装(实现RowMapper接口)
     */
    
    public class JdbcTemplateDemo2 {
    // JdbcTemplate使用步骤:
    // 1、导入jar包;2、设置数据库信息;3、设置数据源;4、调用jdbcTemplate对象中的方法实现操作
    
        public static void main(String[] args) {
            // 设置数据库信息和据源
            JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject();
            JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();
    
    //        插入数据
    //        insertData();
    
    //        查询返回某一个值:查询表中数据总数
            queryForOne(jdbcTemplate);
    
    //        查询返回对象
            queryForObject(jdbcTemplate);
    
    //        查询返回list集合
            queryForList(jdbcTemplate);
    
    //        使用JDBC底层实现查询
            queryWithJDBC();
        }
    
        //  插入数据
        public static void insertData() {
            JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject();
            JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();
    //        调用jdbcTemplate对象中的方法实现操作
            String sql = "insert into user value(?,?,?)";
            //表结构:id(int、自增),name(varchar 100),age(int 10)
            int rows = jdbcTemplate.update(sql, null, "Tom", 35);
            System.out.println("插入行数:" + rows);
        }
    
        /**
         * 查询返回某一个值:查询表中数据总数
         */
        public static void queryForOne(JdbcTemplate jdbcTemplate) {
            String sql = "select count(*) from user";
    //        调用方法获得记录数
            int count = jdbcTemplate.queryForObject(sql, Integer.class);
            System.out.println("数据总数:" + count);
        }
    
        /**
         * 功能:查询返回单个对象
         * 步骤:新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象
         */
        public static void queryForObject(JdbcTemplate jdbcTemplate) {
            String sql = "select * from user where name = ?";
    //        新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象
            User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom");
            System.out.println(user);
        }
    
        /**
         * 功能:查询返回对象集合
         * 步骤:新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象
         */
        public static void queryForList(JdbcTemplate jdbcTemplate) {
            String sql = "select * from user";
    //        第三个参数可以省略
            List<User> users = jdbcTemplate.query(sql, new MyRowMapper());
            System.out.println(users);
        }
    
        /**
         * 使用JDBC底层实现查询
         */
        public static void queryWithJDBC() {
            Connection conn = null;
            PreparedStatement psmt = null;
            ResultSet rs = null;
            String jdbcUrl = "jdbc:mysql://192.168.184.130:3306/gxrdb";
    
            try {
    //            加载驱动
                Class.forName("com.mysql.jdbc.Driver");
    //            创建连接
                conn = DriverManager.getConnection(jdbcUrl, "root", "root");
                String sql = "select * from user where name = ?";
    //            预编译sql
                psmt = conn.prepareStatement(sql);
    //            从1开始,没有就不需要
                psmt.setString(1, "Tom");
    //            执行sql
                rs = psmt.executeQuery();
    //            int num = psmt.executeUpdate(); //增删改,返回操作记录数
    
    //            遍历结果集
                while (rs.next()) {
                    //根据列名查询对应的值,也可以是位置序号
                    String name = rs.getString("name");
                    String age = rs.getString("age");
                    System.out.println(name);
                    System.out.println(age);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    rs.close();
                    psmt.close();
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
    

      MyRowMapper.java 

    package helloworld.jdbcTemplate;
    
    import org.springframework.jdbc.core.RowMapper;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * 实现RowMapper接口,返回User对象
     * */
    public class MyRowMapper implements RowMapper<User>{
    
        @Override
        public User mapRow(ResultSet resultSet, int i) throws SQLException {
    //        获取结果集中的数据
            String name = resultSet.getString("name");
            String age = resultSet.getString("age");
    //        把数据封装成User对象
            User user = new User();
            user.setName(name);
            user.setAge(age);
            return user;
        }
    }
    

      JdbcTemplateObject.java

    package helloworld.jdbcTemplate;
    
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.datasource.DriverManagerDataSource;
    
    /**
     * 功能:设置数据库信息和数据源
     *
     * JdbcTemplat使用
     * 1、导入jar包;2、设置数据库信息;3、设置数据源;4、调用jdbcTemplate对象中的方法实现操作
     */
    public class JdbcTemplateObject {
        DriverManagerDataSource dataSource;
        JdbcTemplate jdbcTemplate;
    
        public JdbcTemplateObject() {
            //        设置数据库信息
            this.dataSource = new DriverManagerDataSource();
            this.dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            this.dataSource.setUrl("jdbc:mysql://192.168.184.130:3306/gxrdb");
            this.dataSource.setUsername("root");
            this.dataSource.setPassword("root");
    
    //        设置数据源
            this.jdbcTemplate = new JdbcTemplate(dataSource);
    
        }
    
        public DriverManagerDataSource getDataSource() {
            return dataSource;
        }
    
        public void setDataSource(DriverManagerDataSource dataSource) {
            this.dataSource = dataSource;
        }
    
        public JdbcTemplate getJdbcTemplate() {
            return jdbcTemplate;
        }
    
        public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
            this.jdbcTemplate = jdbcTemplate;
        }
    }

    User.java

    package helloworld.jdbcTemplate;
    
    /**
     * 数据封装类
     * */
    public class User {
        private String name;
        private String age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User{姓名:" + name + "; 年龄:" + age + "}";
        }
    }
  • 相关阅读:
    深入浅出js单例模式
    前端常见面试-存储/缓存篇
    JavaScript内存管理
    delete操作符
    解决window.location.href跳转无效问题解决办法
    前端程序员经常忽视的一个JavaScript面试题
    【华为云技术分享】漫谈LiteOS-端云互通组件-MQTT开发指南(上)
    【华为云技术分享】序列特征的处理方法之二:基于卷积神经网络方法
    【华为云技术分享】原来CTR预估模型的发展有这样的规律
    【华为云技术分享】在家办公怎么弄?华为云DevCloud宝典一看就懂——项目管理篇
  • 原文地址:https://www.cnblogs.com/SmallStrange/p/9373962.html
Copyright © 2011-2022 走看看