久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JdbcTemplate:(Jdbc模板)

 余香閣 2021-05-27

通過 Jdbc ,、C3P0 ,、Druid 的使用我們會(huì)發(fā)現(xiàn)即使我們做了工具的封裝,,但重復(fù)性的代碼依舊很多。今天我們通過 JdbcTemplate 即 Jdbc 模板來使我們的代碼更加簡潔,,邏輯更加清晰,。

JdbcTemplate是Spring對JDBC的封裝。我們可以將其理解為使用Java通過JDBC操作數(shù)據(jù)庫的固定套路寫法。使開發(fā)人員對數(shù)據(jù)庫操作只關(guān)注:

  1. 數(shù)據(jù)的請求(sql),。

  2. 請求的響應(yīng)(查詢返回),。

    JdbcTemplate使用步驟:


    1.導(dǎo)入Jar包
    2.創(chuàng)建JdbcTemplate對象
    // 傳入連接池對象,,JdbcTemplate會(huì)自動(dòng)維護(hù)連接池
    JdbcTemplate jdbcTemplate = new JdbcTemplate(MyJdbcUtils.getDataSource()),;
    3.編寫sql語句
    // 依舊使用預(yù)編譯對象的格式
    String sql = "insert into user values(null,?,?) "
    4.執(zhí)行并返回結(jié)果
    增刪改:
    // 用于執(zhí)行INSERT,、UPDATE,、DELETE等DML語句
    // sql: 要執(zhí)行的sql語句
    // args: sql執(zhí)行時(shí)需要的參數(shù)|數(shù)組
    public int update(final String sql,Object... args)
    查詢:
    //1.queryForObject返回一個(gè)指定類型**
    String sql = "select pname from product where id = ?"
    String pname = template.queryForObject(sql, String.class, 3),;
    //2.queryForMap返回一個(gè)Map集合對象
    String sql = "select * from product where id = ?",;
    Map<String, Object> map = template.queryForMap(sql, 4)
    //3.queryForList返回一個(gè)List集合對象,,集合對象存儲(chǔ)Map類型數(shù)據(jù)
    String sql = "select * from product where id in (3,4)",;
    List<Map<String, Object>> list = template.queryForList(sql,3,4);
    //4. query使用BeanPropertyRowMapper做映射返回對象
    String sql = "select * from product where id = ? ";
    Product product = template.queryForObject
    (sql, new BeanPropertyRowMapper<>(Product.class), 4);
    // 上面為單條記錄(對象實(shí)體) 下面為多條記錄(對象實(shí)體)
    String sql = "select * from product";        
    List<Product> list = jdbcTemplate.query
    (sqlnew BeanPropertyRowMapper<>(Product.class));
    Tips:

    在做查詢時(shí)第四種方法使用最多,需要保證實(shí)體類的屬性名稱及數(shù)據(jù)類型和數(shù)據(jù)庫表中的字段名稱類型要保持一致,。當(dāng)然也可以進(jìn)行自行的查詢實(shí)體封裝:

    String sql = "select * from product ";
    // 執(zhí)行sql并接收結(jié)果集 參數(shù)1: sql語句
    // 參數(shù)2: rowMapper: 本條記錄,自行封裝
    List<Product> list = template.query(sql, new RowMapper<Product>(){
    @Override // resultSet: 被遍歷到的本條記錄 i: 索引值
    public Product mapRow(ResultSet rs, int i)throws SQLException{
    Product pro = new Product();
    pro.setId(rs.getInt("id"));
    pro.setPname(rs.getString("pname"));
    pro.setPrice(rs.getDouble("price"));
    return pro;
    }
    });

    數(shù)據(jù)庫元數(shù)據(jù):


    元數(shù)據(jù):數(shù)據(jù)庫,、表、列的定義信息,。

    ParameterMetaData
    作用:

    獲取PreparedStatement所編譯的sql語句中 ? 的個(gè)數(shù)和類型

    String sql = "select *
    from user where username = ? and password = ? ";
    PreparedStatement pst = conn.PrepareStatement(sql);
    API
    PreparedStatement. getParameterMetaData();
    //int getParameterCount()
    //獲取PreparedStatement的SQL語句參數(shù),?的個(gè)數(shù)
    //int getParameterType(int param)
    //獲取指定參數(shù)的SQL類型。
    //不是所有的數(shù)據(jù)庫都支持,mysql不支持
    ResultSetMetaData
    作用:

    可用于獲取有關(guān) ResultSet 對象中列的類型和屬性的信息,。

    ResultSetMetaData

    //如何獲取 ResultSetMetaData
    //ResultSet.getMetaData()
    //int getColumnCount()
    //返回此 ResultSet 對象中的列數(shù)
    //String getColumnName(int column)
    //獲取指定列的名稱
    //String getColumnTypeName(int column)
    //獲取指定列的數(shù)據(jù)庫特定類型名稱

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多