JdbcTemplate query查询方法

JdbcTemplate 中有很多的查询方法,整理几个比较常用的方法。

1、queryFor*方法很好用,简单强大。

2、query查询方法中带有回调接口有三个:ResultSetExtractor、RowCallbackHandler、RowMapper  使用ResultSetExtractor时,一般是直接new ResultSetExtractor(),然后在extractData(ResultSet rs)方法中实现自己的内容,最后返回Object结果。  使用RowCallbackHandler时,也是new RowCallbackHandler(),然后在processRow(ResultSet rs)方法中实现自己代码,并且将内容保存在上下文变量中,因为此方法没有返回类型(void)  使用RowMapper时,new RowMapper(), 然后在mapRow(ResultSet rs, int rowNum)实现自己代码,并返回Object结果。

3、ResultSetExtractor一次处理多个结果,而RowCallbackHandler、RowMapper只处理单行结果,具体内容可参照下面的代码,代码都是经过测试的,绝对好使。

[java] 
view plain
 copy
  1. @SuppressWarnings("unchecked")  
  2.     public static void main(String[] args) {  
  3.   
  4.         try {  
  5.             BasicDataSource datasource = new BasicDataSource();  
  6.             datasource.setDriverClassName("com.mysql.jdbc.Driver");  
  7.             datasource.setUrl("jdbc:mysql://127.0.0.1:3306/xzx");  
  8.             datasource.setUsername("root");  
  9.             datasource.setPassword("root");  
  10.   
  11.             JdbcTemplate jt = new JdbcTemplate(datasource);  
  12.   
  13.             // query1(jt);  
  14.             // query2(jt);  
  15.             // query3(jt);  
  16.             // query4(jt);  
  17.             // query5(jt);  
  18.             // query6(jt);  
  19.             // query7(jt);  
  20.             // query8(jt);  
  21.             query9(jt);  
  22.         } catch (Exception e) {  
  23.             e.printStackTrace();  
  24.         }  
  25.   
  26.     }  
  27.   
  28.     @SuppressWarnings("unchecked")  
  29.     private static void query9(JdbcTemplate jt) {  
  30.           
  31.         List list1=new ArrayList();  
  32.   
  33.         String sql = "select * from userinfo where id<?";  
  34.           
  35.         list1=jt.execute(sql,new PreparedStatementCallback() {  
  36.   
  37.             public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {  
  38.                   
  39.                 ps.setInt(120);  
  40.                   
  41.                 ResultSet rs=ps.executeQuery();  
  42.                   
  43.                 Userinfo userinfo = new Userinfo();  
  44.                   
  45.                 List list=new ArrayList();  
  46.   
  47.                 while (rs.next()) {  
  48.                     userinfo.setId(rs.getInt("id"));  
  49.                     userinfo.setUsername(rs.getString("username"));  
  50.                     userinfo.setPassword(rs.getString("password"));  
  51.                     userinfo.setCrateDate(rs.getDate("createDate"));  
  52.                     list.add(userinfo);  
  53.                 }  
  54.                   
  55.                 return list;  
  56.             }  
  57.         });  
  58.   
  59.         System.out.println(list1.size());  
  60.     }  
  61.   
  62.     /** 
  63.      * queryForInt(String sql) 
  64.      *  
  65.      * queryFor**(String sql) 
  66.      *  
  67.      * @param jt 
  68.      */  
  69.   
  70.     private static void query8(JdbcTemplate jt) {  
  71.         int i = jt.queryForInt("select count(*) from userinfo");  
  72.         System.out.println(i);  
  73.   
  74.     }  
  75.   
  76.     /** 
  77.      * query(String sql, PreparedStatementSetter pss, ResultSetExtractor<T> rse) 
  78.      *  
  79.      * query(String sql, PreparedStatementSetter pss, RowCallbackHandler rch) 
  80.      *  
  81.      * query(String sql, PreparedStatementSetter pss, RowMapper<T> rowMapper) 
  82.      *  
  83.      * @param jt 
  84.      */  
  85.   
  86.     @SuppressWarnings("unchecked")  
  87.     private static void query7(JdbcTemplate jt) {  
  88.         List list1 = new ArrayList();  
  89.   
  90.         String sql = "select * from userinfo where id<? and username=?";  
  91.   
  92.         list1 = jt.query(sql, new PreparedStatementSetter() {  
  93.   
  94.             public void setValues(PreparedStatement ps) throws SQLException {  
  95.                 ps.setInt(120);  
  96.                 ps.setString(2"user4");  
  97.   
  98.             }  
  99.   
  100.         }, new ResultSetExtractor() {  
  101.   
  102.             public Object extractData(ResultSet rs) throws SQLException, DataAccessException {  
  103.                 List list = new ArrayList();  
  104.   
  105.                 while (rs.next()) {  
  106.   
  107.                     Userinfo u = new Userinfo();  
  108.   
  109.                     u.setId(rs.getInt("id"));  
  110.   
  111.                     u.setUsername(rs.getString("username"));  
  112.   
  113.                     u.setPassword(rs.getString("password"));  
  114.   
  115.                     u.setCrateDate(rs.getDate("createDate"));  
  116.   
  117.                     list.add(u);  
  118.   
  119.                 }  
  120.   
  121.                 return list;  
  122.             }  
  123.         });  
  124.   
  125.         System.out.println(list1.size());  
  126.     }  
  127.   
  128.     /** 
  129.      * query(String sql, Object[] args, ResultSetExtractor<T> rse) query(String 
  130.      * sql, Object[] args, int[] argTypes, ResultSetExtractor<T> rse) 
  131.      *  
  132.      * query(String sql, Object[] args, RowMapper<T> rowMapper) query(String 
  133.      * sql, Object[] args, int[] argTypes, RowMapper<T> rowMapper) 
  134.      *  
  135.      * query(String sql, Object[] args, RowCallbackHandler rch) query(String 
  136.      * sql, Object[] args, int[] argTypes, RowCallbackHandler rch) 
  137.      *  
  138.      * argTypes:java.sql.Type中有定义 
  139.      *  
  140.      * @param jt 
  141.      */  
  142.   
  143.     @SuppressWarnings("unchecked")  
  144.     private static void query6(JdbcTemplate jt) {  
  145.   
  146.         List list1 = new ArrayList();  
  147.   
  148.         String sql = "select * from userinfo where id<? and username=?";  
  149.   
  150.         list1 = jt.query(sql, new Object[] { 15"user4" }, new ResultSetExtractor() {  
  151.   
  152.             public Object extractData(ResultSet rs) throws SQLException, DataAccessException {  
  153.   
  154.                 List list = new ArrayList();  
  155.   
  156.                 while (rs.next()) {  
  157.   
  158.                     Userinfo u = new Userinfo();  
  159.   
  160.                     u.setId(rs.getInt("id"));  
  161.   
  162.                     u.setUsername(rs.getString("username"));  
  163.   
  164.                     u.setPassword(rs.getString("password"));  
  165.   
  166.                     u.setCrateDate(rs.getDate("createDate"));  
  167.   
  168.                     list.add(u);  
  169.   
  170.                 }  
  171.   
  172.                 return list;  
  173.             }  
  174.         });  
  175.   
  176.         System.out.println(list1.size());  
  177.   
  178.     }  
  179.   
  180.     /** 
  181.      * query(final String sql, final ResultSetExtractor<T> rse) query(String 
  182.      * sql, RowCallbackHandler rch) query(String sql, RowMapper<T> rowMapper) 
  183.      *  
  184.      * @param jt 
  185.      */  
  186.   
  187.     @SuppressWarnings("unchecked")  
  188.     private static void query5(JdbcTemplate jt) {  
  189.   
  190.         List list1 = new ArrayList();  
  191.   
  192.         String sql = "select * from userinfo where id<20";  
  193.   
  194.         list1 = jt.query(sql, new ResultSetExtractor() {  
  195.   
  196.             public Object extractData(ResultSet rs) throws SQLException, DataAccessException {  
  197.   
  198.                 List list = new ArrayList();  
  199.   
  200.                 while (rs.next()) {  
  201.   
  202.                     Userinfo u = new Userinfo();  
  203.   
  204.                     u.setId(rs.getInt("id"));  
  205.   
  206.                     u.setUsername(rs.getString("username"));  
  207.   
  208.                     u.setPassword(rs.getString("password"));  
  209.   
  210.                     u.setCrateDate(rs.getDate("createDate"));  
  211.   
  212.                     list.add(u);  
  213.   
  214.                 }  
  215.   
  216.                 return list;  
  217.             }  
  218.   
  219.         });  
  220.   
  221.         System.out.println(((Userinfo) list1.get(4)).getUsername());  
  222.   
  223.     }  
  224.   
  225.     /** 
  226.      * query(PreparedStatementCreator psc, RowMapper<T> rowMapper) 多次调用RowMapper 
  227.      *  
  228.      * @param jt 
  229.      */  
  230.   
  231.     static int i = 0;  
  232.   
  233.     static int j = 0;  
  234.   
  235.     static int k = 0;  
  236.   
  237.     @SuppressWarnings("unchecked")  
  238.     public static void query4(JdbcTemplate jt) {  
  239.   
  240.         List list1 = new ArrayList();  
  241.   
  242.         list1 = jt.query(new PreparedStatementCreator() {  
  243.   
  244.             public PreparedStatement createPreparedStatement(Connection con) throws SQLException {  
  245.   
  246.                 System.out.println("i=" + (++i));  
  247.   
  248.                 String sql = "select * from userinfo where id<?";  
  249.   
  250.                 PreparedStatement ps = con.prepareStatement(sql);  
  251.   
  252.                 ps.setInt(120);  
  253.   
  254.                 return ps;  
  255.             }  
  256.         }, new RowMapper() {  
  257.   
  258.             public Object mapRow(ResultSet rs, int rowNum) throws SQLException {  
  259.   
  260.                 System.out.println("j=" + (++j));  
  261.   
  262.                 Userinfo u = new Userinfo();  
  263.   
  264.                 u.setId(rs.getInt("id"));  
  265.   
  266.                 u.setUsername(rs.getString("username"));  
  267.   
  268.                 u.setPassword(rs.getString("password"));  
  269.   
  270.                 u.setCrateDate(rs.getDate("createDate"));  
  271.   
  272.                 return u;  
  273.             }  
  274.         });  
  275.   
  276.         System.out.println(list1.size());  
  277.   
  278.     }  
  279.   
  280.     /** 
  281.      * query(PreparedStatementCreator psc, RowCallbackHandler rch) 
  282.      *  
  283.      * @param jt 
  284.      */  
  285.   
  286.     @SuppressWarnings("unchecked")  
  287.     public static void query3(JdbcTemplate jt) {  
  288.   
  289.         final List list = new ArrayList();  
  290.   
  291.         jt.query(new PreparedStatementCreator() {  
  292.   
  293.             public PreparedStatement createPreparedStatement(Connection con) throws SQLException {  
  294.   
  295.                 System.out.println("i=" + (++i));  
  296.   
  297.                 String sql = "select * from userinfo where id<?";  
  298.   
  299.                 PreparedStatement ps = con.prepareStatement(sql);  
  300.   
  301.                 ps.setInt(120);  
  302.   
  303.                 return ps;  
  304.             }  
  305.         }, new RowCallbackHandler() {  
  306.   
  307.             public void processRow(ResultSet rs) throws SQLException {  
  308.   
  309.                 System.out.println("j=" + (++j));  
  310.                 while (rs.next()) {  
  311.   
  312.                     Userinfo u = new Userinfo();  
  313.   
  314.                     u.setId(rs.getInt("id"));  
  315.   
  316.                     u.setUsername(rs.getString("username"));  
  317.   
  318.                     u.setPassword(rs.getString("password"));  
  319.   
  320.                     u.setCrateDate(rs.getDate("createDate"));  
  321.   
  322.                     list.add(u);  
  323.   
  324.                 }  
  325.   
  326.             }  
  327.         });  
  328.   
  329.         System.out.println(list.size());  
  330.     }  
  331.   
  332.     /** 
  333.      * query(PreparedStatementCreator psc, ResultSetExtractor<T> rse) 
  334.      *  
  335.      * @param jt 
  336.      */  
  337.     @SuppressWarnings("unchecked")  
  338.     public static void query2(JdbcTemplate jt) {  
  339.         Userinfo u = new Userinfo();  
  340.         u = jt.query(new PreparedStatementCreator() {  
  341.   
  342.             public PreparedStatement createPreparedStatement(Connection con) throws SQLException {  
  343.   
  344.                 System.out.println("i=" + (++i));  
  345.   
  346.                 String sql = "select * from userinfo where id=?";  
  347.   
  348.                 PreparedStatement ps = con.prepareStatement(sql);  
  349.   
  350.                 ps.setInt(120000);  
  351.   
  352.                 return ps;  
  353.             }  
  354.         }, new ResultSetExtractor() {  
  355.   
  356.             public Object extractData(ResultSet rs) throws SQLException, DataAccessException {  
  357.   
  358.                 System.out.println("j=" + (++j));  
  359.   
  360.                 Userinfo userinfo = new Userinfo();  
  361.   
  362.                 while (rs.next()) {  
  363.   
  364.                     userinfo.setId(rs.getInt("id"));  
  365.   
  366.                     userinfo.setUsername(rs.getString("username"));  
  367.   
  368.                     userinfo.setPassword(rs.getString("password"));  
  369.   
  370.                     userinfo.setCrateDate(rs.getDate("createDate"));  
  371.   
  372.                 }  
  373.   
  374.                 return userinfo;  
  375.             }  
  376.         });  
  377.         System.out.println(u.getCrateDate());  
  378.     }  
  379.   
  380.     /** 
  381.      * query( PreparedStatementCreator psc, final PreparedStatementSetter pss, 
  382.      * final ResultSetExtractor<T> rse) 
  383.      *  
  384.      * @param jt 
  385.      */  
  386.     @SuppressWarnings("unchecked")  
  387.     public static void query1(JdbcTemplate jt) {  
  388.         Userinfo u = new Userinfo();  
  389.   
  390.         u = jt.query(new PreparedStatementCreator() {  
  391.   
  392.             public PreparedStatement createPreparedStatement(Connection con) throws SQLException {  
  393.   
  394.                 System.out.println("i=" + (++i));  
  395.   
  396.                 String sql = "select * from userinfo where id=?";  
  397.   
  398.                 return con.prepareStatement(sql);  
  399.             }  
  400.         }, new PreparedStatementSetter() {  
  401.   
  402.             public void setValues(PreparedStatement ps) throws SQLException {  
  403.   
  404.                 System.out.println("j=" + (++j));  
  405.   
  406.                 ps.setInt(120000);  
  407.   
  408.             }  
  409.         }, new ResultSetExtractor() {  
  410.   
  411.             public Object extractData(ResultSet rs) throws SQLException, DataAccessException {  
  412.   
  413.                 System.out.println("k=" + (++k));  
  414.   
  415.                 Userinfo userinfo = new Userinfo();  
  416.   
  417.                 while (rs.next()) {  
  418.                     userinfo.setId(rs.getInt("id"));  
  419.                     userinfo.setUsername(rs.getString("username"));  
  420.                     userinfo.setPassword(rs.getString("password"));  
  421.                     userinfo.setCrateDate(rs.getDate("createDate"));  
  422.   
  423.                 }  
  424.   
  425.                 return userinfo;  
  426.             }  
  427.         });  
  428.   
  429.         System.out.println(u.getCrateDate());  
  430.     }  

 

THE END
< <上一篇
下一篇>>