当前位置:首页 >媒体社区类 >day4-mysql-JDBC

day4-mysql-JDBC

2019-12-08 08:07:45 [古词风韵] 来源:郁金网
版权声明:本文是博客作者的原创文章,遵循CC 4.0 BY-SA版权协议。请附上原始资料和本声明的链接以便重印。 本文链接:https://blog.csdn.net/weixin _ 38255444/article/details/100046716第4天:JDBC规范将接口JDBC定义为访问数据库的标准和规范。访问数据库只需要调用JDBC的接口和方法。数据驱动由数据库制造商提供:要开发访问数据库的程序,您只需要调用JDBC借口方法,而不需要注意类是如何实现的 。使用相同的一组Java代码。经过一些修改,您可以访问其他JDBC支持的数据库核心应用编程接口或类角色驱动程序管理器类1)管理和注册数据库驱动程序2)获取数据库连接对象连接接口连接对象。可用于为语句和准备语句创建一个SQL语句对象,并将SQL语句发送到数据库服务器准备语句接口的一个SQL语句对象。语句的子接口结果集接口用于封装数据库查询的结果集,并将其返回给客户端Java程序驱动管理器的角色。1)管理和注册驱动程序 。2)创建到数据库的连接 。4.1方法静态方法描述连接获取连接(字符串网址、字符串用户、字符串密码))通过连接字符串、用户名和密码,通过连接字符串获得数据库的连接对象连接获取连接(字符串网址、属性信息)。属性对象使用JDBC连接数据用户密码URL驱动程序类字符串4.3的四个参数获取连接对象4.2格式连接URL地址的协议名称:子协议://服务器名称或IP:端口号/数据库名称?Parameter =参数值可以在MySQL中缩写,前提是MySQL服务器必须是本地服务器,端口号为3306缩写格式:jdbc:mysql///数据库名称。如果数据库有乱码,可以指定连接参数characterEncoding=utf8,让数据库使用utf8编码处理数据 例如:JDBC:MySQL://localhost:3306/database?字符编码=utf84.4获取数据库对象1)使用用户名 、密码、网址获取连接对象字符串网址= " JDBC:MySQL://192 . 168 . 220 . 128/DB1 ";字符串用户= " root字符串passord = " root连接连接=驱动管理器. getConnection(url,用户,密码);//System.out.println(连接);2)使用属性文件和网址获取连接对象字符串网址= " JDBC:MySQL://192 . 168 . 220 . 128/DB1 ";字符串用户= " root字符串passord = " root//使用属性文件PropertieS = NewPropertieS();属性. put(“用户”,用户);属性. put(“密码”,密码);连接= Drivermanager . Getconnection(URL,属性);出去。println(连接)连接接口连接接口,特定的实现类由数据库制造商实现,并表示一个连接对象 接口方法描述语句创建语句()创建一个SQL语句对象语句接口表示一个语句对象,该语句对象用于向服务器发送SQL语句 ,执行静态SQL语句 ,并返回它生成的结果对象 语句接口中的方法描述了int executeUpdate(字符串sql)发送DML语句、添加和删除、插入更新删除参数:SQL语句返回值:返回受数据库结果集执行查询(String sql)影响的行数,以发送DQL语句和执行查询 选择参数:SQL语句返回值:查询结果集接口函数的结果集:封装数据库查询的结果集,遍历结果集,取出每个记录结果集接口方法描述布尔值next()1)光标下移1行2)返回布尔值,如果有另一条记录则返回true,否则返回false数据类型getXxx()) 1)传递字段名,参数为字符串类型 返回不同的类型2)传递列号,参数是一个整数,从1开始 返回不同类型的案例来演示DDL操作:使用JDBC在MySQL的数据库中创建一个学生表包;导入Java . SQL . connection;导入Java . SQL . Drivermanager;导入Java . SQL . SqLexception;导入java.sql .语句;公共类JdbcDemoForDDL {公共静态空主(字符串[)参数){字符串URL = " JDBC:MySQL://192 . 168 . 220 . 128/db1 ";字符串用户= " root字符串密码= " root连接连接=空;语句= null请尝试{//1。加载注册驱动程序(可以省略),并思考为什么可以注册驱动程序。类的名称。//2。获取连接//jdbc:mysql://主机名:端口/数据库[?参数名称=参数值]连接= drivermanager.getconnection(网址、用户、密码);System.out.println(连接);//3。定义SQL语句string SQL = " createtablestudent9( n "+" identitprimarykeyauto _ increment。 n“+”name varchar(20)不为null。 n“+”gender boolean 。 n“+”生日 n“+”;//4。使用语句对象执行语句=连接。CREATE STATEMENT();//5。返回结果集DDL语句返回值0Inti =语句。执行更新(SQL);System.out.println("执行返回:"+I ");}捕获(CLaSS notfoundException | SQLException e){ e . printsTackTrace();最后{//6。释放资源if(语句!= null){请尝试{ statement . close();} catch(SqlException e){ e . printsTackRace();} }如果(连接!= null){尝试{ connection . close();} catch(SqlException e){ e . printsTackRace();} } } } } DML操作:向学生表中添加4条记录,主键是自动增长包com . ityoukin . JDBC;导入Java . SQL . connection;导入Java . SQL . Drivermanager;导入Java . SQL . SqLexception;导入java.sql .语句;公共类JdbcDemoForDML {公共静态空主(字符串[)参数){字符串URL = " JDBC:MySQL://192 . 168 . 220 . 128/db1 ";字符串用户= " root字符串密码= " root连接连接=空;语句= null请尝试{//1。加载注册驱动程序(可以省略) ,并思考为什么可以注册驱动程序。类的名称。//2。获取连接//jdbc:mysql://主机名:端口/数据库[?参数名称=参数值]连接= drivermanager.getconnection(网址、用户、密码);System.out.println(连接);//3。定义SQL语句字符串QL = "插入学生9VALUES n"+"(空,'孙武空',1,' 1993-03-24 ', n"+"(空,'白顾靖',0,' 1995-03-24 ', n"+"(空,猪八戒',1,' 1903-03-24 ',n" +"(空,'嫦娥',0,' 1993-03-11 ')";//4。使用语句对象执行语句=连接。CREATE STATEMENT();//5。受返回结果集Inti =语句的DML语句影响的行数。执行更新(SQL);System.out.println("执行返回:"+I ");}捕获(CLaSS notfoundException | SQLException e){ e . printsTackTrace();最后{//6。释放资源if(语句!= null){请尝试{ statement . close();} catch(SqlException e){ e . printsTackRace();} }如果(连接!= null){尝试{ connection . close();} catch(SqlException e){ e . printsTackRace();} } } } } } DQL操作:查询学生表记录,打印出学生信息包。导入Java . SQL . *;公共类JdbcDemoForDQL(公共静态空主(字符串[)参数);字符串用户= " root字符串密码= " root连接连接=空;语句= null结果集结果集=空;请尝试{//1。加载注册驱动程序(可以省略),并思考为什么可以注册驱动程序 。类的名称。//2。获取连接//jdbc:mysql://主机名:端口/数据库[?参数名称=参数值]连接= drivermanager.getconnection(网址、用户、密码);System.out.println(连接);//3。定义语句字符串。//4。使用语句对象执行语句=连接。CREATE STATEMENT();//5。返回结果集DQL语句返回结果集结果集=语句。执行查询;如果(结果集!= null){ while(ResultSet . next()){ int id = ResultSet . GetInt(" id ");字符串名称=结果集。字符串(“名称”);布尔性别=结果集。getBoolean(“性别”);生日日期=结果集。System.out.println("号码:"+id+",姓名:"+name+" ,性别:"+(性别?"男性":"女性")+"生日:"+生日";}}}捕获(CLaSS notfoundException | SqLexception e){ e . printsTackRace();最后{//6。如果(结果集!= null){尝试{ ResultSet . close();} catch(SqlException e){ e . printsTackRace();} }如果(陈述!= null){请尝试{ statement . close();} catch(SqlException e){ e . printsTackRace();} }如果(连接!= null){尝试{ connection . close();} catch(SqlException e){ e . printsTackRace();}}}}}摘要:总结JDBC访问数据库的步骤1)注册和加载驱动程序(可以省略)2)获取连接3)获取语句对象4)使用语句对象执行SQL语句5)返回结果集6)释放资源注意事项:要释放的对象:结果集结果集、语句语句、连接释放原则:先开后关,然后开,先关 结果集语句连接在最终语句块中释放;9.数据库工具类JdbcUtil如果经常使用一个函数,我们建议将这个函数做成一个可以在不同地方重用的工具类 在前一节的例子中有很多重复的代码。我们可以提取这些公共代码,并创建一个JdbcUtil工具类。可提取的公共代码分析:1)用户名、密码、网址 、驱动程序类配置2)数据库连接getConnection3)关闭所有打开的资源导入Java . io . FileReader;导入Java . io . IOexception;导入Java . net . URL;导入Java . SQL . *;导入Java . util . objects;导入java.util .属性;公共类JdbcUtil {私有静态字符串url私有静态字符串用户;私有静态字符串密码;静态{尝试{属性属性=新属性();CLaSS Loader CLaSS Loader = jdbcutil . class . GetCLaSS Loader();网址资源= CLaSS Loader . GetReSource(" JDBC . properties ");字符串路径=对象 。要求非空(资源)。getPath();System.out.println(路径);属性. load(新文件读取器(路径));url =属性。GetProperty(“URL”);user=properties.getProperty(“用户”);密码=属性。getProperty(“密码”);字符串驱动程序=属性。getProperty(“驱动程序”);Class.forName(驱动程序);}捕获(IOException | CLaSS notfoundException e){ e . printsTackRace();}}/* * *获取连接*/public static connection get connection()thrussql exception { returndrivermanager . get connection(URL、用户、密码);}/* * *释放连接*/公共站空隙关闭(结果集结果集,状态声明,连接连接){//6。如果(结果集!= null){尝试{ ResultSet . close();} catch(SqlException e){ e . printsTackRace();}}JdbcUtil.close(语句、连接);如果(陈述!= null){请尝试{ statement . close();} catch(SqlException e){ e . printsTackRace();} }如果(连接!= null){尝试{ connection . close();} catch(SqlException e){ e . printsTackRace();}}}}案例:用户登录身份验证1。使用客户端工具创建用户表和初始用户记录创建表用户(id int primarykey auto _ increment,name varchar (20),password varchar(20));插入用户值(空,‘杰克’,‘123’),(空,‘罗斯’,‘456’);2.编写程序从控制单元获取用户名和密码输入,查询数据库,验证用户名和密码输入是否正确。导入com . I tyouxin . util . jdbcutil;导入Java . SQL . connection;导入Java . SQL . ResultSet;导入Java . SQL . SqLexception;导入java.sql .语句;导入Java . util . scanner;公共类JdbcDemoLogin {公共静态空主(字符串[)参数){扫描仪=新扫描仪(系统输入);System.out.println(“请输入用户名”);字符串名称=扫描仪。下一行();System.out.println(“请输入密码”);字符串密码=扫描仪。下一行();登录(姓名、密码);}//验证登录到public static void log in(string name,string password){ connection connection = null;语句= null结果集结果集=空;请尝试{ COnnection = jdbcutil . GetCOnnection();语句=连接。create statement();//通过拼接SQL查询 ,记录stringSQL = "从userwhere name ='"+name+" '和password ='"+password+" '中选择*;resultSet = statement . Executequery(SQL);//如果有记录,验证通过的条件是(resultset . next()){ system . out . println("验证通过,欢迎:"+name ");" }否则{系统. out.println("身份验证失败,请输入正确的用户名和密码!”);} } catch(SqLexception e){ e . printsTackRace();}最后{JdbcUtil.close(结果集、语句、连接);}}}}升级并纠正代码问题:SQL注入问题,它不允许用户输入和SQL语句的简单字符串连接。对于这样的问题,准备接口可以用来解决准备接口[OL]准备语句(PrepareStatement)是语句接口的一个子接口,继承父类接口中的所有方法。 这是一个预编译的SQL语句 功能:1)具有预编译功能,提高了SQL的执行效率;2)能有效防止SQL注入问题,具有较高的安全性。 prepare retrant的使用描述了在连接接口中创建prepare retrant对象prepare retrant(stringsql)的方法,该方法指定了使用占位符的预编译的sql语句?创建一个语句对象,准备接口中的方法,准备接口中的方法描述了int executeUpdate()执行DML、添加、删除和修改以及返回受影响行数的操作 结果集执行查询()执行DQL查询操作,并返回结果集[/ol] 3。使用步骤:1)编写SQL语句,使用未知内容?占位符:“从用户名=?”中选择*密码= ?“;2)获取PreparedStatement对象3)设置实际参数:setXXX(占位符位置,实值)4)执行参数化的sqlogin改进代码包com . ityoukin . JDBC;导入com . I tyouxin . util . jdbcutil;导入Java . SQL . *;导入Java . util . scanner;公共类JdbcDemoLogin02 {公共静态空主(字符串[)参数){扫描仪=新扫描仪(系统输入);System.out.println(“请输入用户名”);字符串名称=扫描仪。下一行();System.out.println(“请输入密码”);字符串密码=扫描仪。下一行();登录(姓名、密码);}/* * *登录身份验证*/public static void log in(string name,string password){ connection connection = null。PreparedStatement语句=空;结果集结果集=空;请尝试{ COnnection = jdbcutil . GetCOnnection();字符串sql= "从用户名=?密码=?“;语句= connection.prepareStatement语句(SQL);语句. setString(1,名称);语句. setString(2,密码);system . out . println(SQL);结果集=语句。executequery();//如果有记录,验证通过的条件是(resultset . next()){ system . out . println("验证通过,欢迎:"+name ");" }否则{系统. out.println("身份验证失败 ,请输入正确的用户名和密码!”);} } catch(SqLexception e){ e . printsTackRace();}最后{JdbcUtil.close(结果集、语句、连接);}}}案例:使用PreparedStatement查询一段数据,并将其打包到学生类对象包com . ityoukin . JDBC中;导入com . you Xin . entity . student;导入com . I tyouxin . util . jdbcutil;导入Java . SQL . connection;导入Java . SQL . PreparedStatement;导入Java . SQL . ResultSet;导入Java . SQL . SqLexception;公共类JdbcDemoStudent {公共静态空主(字符串[)参数)引发SQLException {连接连接= jdbcutil . getconnection();字符串sql= "从id=?“;准备报表准备报表=连接。准备报表(SQL);编制报表集(1,5);结果集结果集= PreparedStatement . executequery();如果(结果集. next()){学生=新学生();student . SetID(resultSet . GetInt(" id "));student . SetName(resultSet . GetString(“名称”));学生性别(resultSet.getBoolean布尔值(“性别”));学生生日(结果集日期(“生日”);System.out.println(学生);}JdbcUtil.close(结果集、准备状态、连接);}}案例:多个语句封装在一个集合列表中,集合中的每个元素都是一个JavaBean实体类包。导入com . you Xin . entity . student;导入com . I tyouxin . util . jdbcutil;导入Java . SQL . connection;导入Java . SQL . PreparedStatement;导入Java . SQL . ResultSet;导入Java . SQL . SqLexception;导入Java . util . Arraylist;导入Java . util . list;公共类JdbcDemoStudents {公共静态空主(字符串[)参数)引发SQLException {连接连接= jdbcutil . getconnection();字符串sql= "从学生中选择* ";准备报表准备报表=连接。准备报表(SQL);结果集结果集= PreparedStatement . executequery();列表和lt。学生>学生=新数组列表& lt>;();同时(结果集. next()){学生=新学生();student . SetID(resultSet . GetInt(" id "));student . SetName(resultSet . GetString(“名称”));学生性别(resultSet.getBoolean布尔值(“性别”));学生生日(结果集日期(“生日”);System.out.println(学生);学生. add(学生);}系统输出打印输入(学生);JdbcUtil.close(结果集、准备状态、连接);}}JDBC事务[ol]事务相关方法连接界面中的事务相关方法声明无效集自动提交(布尔自动提交)参数为真或假。如果设置为false,则意味着自动提交被关闭。这相当于打开事务无效提交()提交事务无效回滚()回滚事务案例开发示例1)获取连接2)打开事务3)获取准备报表4)使用准备报表执行两个更新操作5)在正常情况下提交事务6)异常回滚事务7)最后关闭资源包com . youxin . JDBC;导入com . I tyouxin . util . jdbcutil;导入Java . SQL . connection;导入Java . SQL . PreparedStatement;导入Java . SQL . SqLexception;公共类JdbcDemoTransaction {公共静态空主(字符串[)参数){连接=空;准备报表准备报表=空;请尝试{ COnnection = jdbcutil . GetCOnnection();//打开事务连接,设置自动提交(false);//获取一个preparedStatement//三个扣减准备语句=连接。准备语句(“updateaccountsetbalance = balance-?其中名称=?”);preparedStatement.setInt(1,500);Setstring (2,“张三”);prepared statement . executeUPdate();//模拟中出现异常//system . out . println(3/0);//李四加钱预结单=连接预结单(“updateaccountsetbalance = balance+?"哪里的名字=?);preparedStatement.setInt(1 ,500);Setstring (2 ,“Li si”);prepared statement . executeUPdate();//提交事务连接. commit();System.out.println(“成功传输”);}捕获(异常e){ e . printsTackRace();System.out.println(“传输失败”);请尝试{//异常,事务回滚连接 。roll back();} catch(SqlException ex){ ex . printsTackRace();}}最后{JdbcUtil.close(准备报表,连接);}}}JDBC连接池实际上是一个保存数据库连接的容器(集合)。 系统初始化后,容器被创建,一些连接对象将被应用到容器中。当用户访问数据库时,将从容器中获取连接对象,并且在用户访问数据库后,连接对象将返回到容器中。 优点:1)节省资源2)用户访问高效的相关接口方法数据源接口。在javax.sql包下 ,用于连接物理数据源的工厂被用作DriverManager工具的替代工具,数据源对象是获得连接的首选方法。 数据源接口由驱动程序供应商实现。 1)获取连接:数据源接口中的方法描述获取数据源链接对象连接获取连接(字符串名称,字符串密码)获取数据源链接对象连接通过参数用户名密码返回连接2)连接。关闭() 如果连接对象连接是从连接池中获得的,将调用Connection.close()方法,并且连接将不会再次关闭。 但是返回连接数据库连接池技术通用实现名称来描述C3P0开源数据库连接池技术、https://www.mchange.com/projects/c3p0/Druid数据库连接池实现技术、阿里巴巴https://github.com/alibaba/druidC3P0提供的项目地址演示公共类演示C3 P0 {公共静态空主(字符串[)参数)抛出SQLException {//获取数据源comboboleddatasource = new comboboleddatasource();//使用指定的配置名称获取数据源//CombooOledTasource = NewCombooOledTasource(“其他C3 P0”);对于(int I = 1;i <。= 12;i++) {连接连接=数据源。Getconnection();system . out . println(I+" "+connection+",DB:"+connection . GetCatalog());//如果(i%5==0){connection.close(),则返回连接;}}}}Druid使用代码示例package com . I tyouxin . data source . Druid;import com . Alibaba . druid . pool . DruidDataSourceFactory;导入javax.sql .数据源;导入Java . SQL . connection;导入java.util .属性;公共类解码器{ public static void main(string[)args)引发异常{//1。获取数据源属性属性= new properties();prperties . load(demodruid . class . GetClassLoader()。getResourceAsStream(“德鲁伊属性”);数据源数据源= DruidDataSourceFactory . create data source(属性);连接连接=数据源。Getconnection();System.out.println(连接+),目录:“+连接. GetCatalog());}}定义工具类1)定义类DataSouceUtil2)提供静态代码块加载配置文件并初始化连接池对象3)提供方法1。获取连接方法:通过数据库连接池2获取连接。释放资源3以获取连接池方法包。import com . Alibaba . druid . pool . DruidDataSourceFactory;导入javax.sql .数据源;导入Java . SQL . connection;导入Java . SQL . ResultSet;导入Java . SQL . SqLexception;导入java.sql .语句;导入java.util .属性;公共类数据源工具{私有静态数据源;静态{属性属性=新属性();请尝试{ properties . load(DataSourceutil . class . GetClassLoader()。getResourceAsStream(“德鲁伊属性”);数据源= DruidDataSourceFactory . create data source(属性);}捕获(异常e){ e . printsTackRace();} }/* * * get connection */public static connection getconnection()引发sqlexception { returndata source . getconnection();}/* * *释放资源*/publicstatic void close(语句,connection connection){ close(null ,语句,connection);}公共静态无效关闭(结果集结果集、语句、连接连接){如果(结果集!= null){尝试{ ResultSet . close();} catch(SqlException e){ e . printsTackRace();} }如果(陈述!= null){请尝试{ statement . close();} catch(SqlException e){ e . printsTackRace();} }如果(连接!= null){尝试{ connection . close();} catch(SqlException e){ e . printsTackRace();}}}/* * *获取数据库连接池* @ return */public static data source getdata source(){ return data source;}}[/ol]JdbcTemplate为了使JDBC更容易使用,Spring在JDBCAPI上定义了一个抽象层,以建立一个JDBC访问框架。作为SpringJDBC框架的核心,JDBC模板旨在为不同类型的JDBC操作提供模板方法。每个模板方法都可以控制整个过程 ,并允许涵盖过程中的特定任务。这样,在尽可能保持灵活性的同时,可以最小化数据库访问的工作量。 JdbcTemplate主方法名称描述更新()执行DML语句 添加、删除和修改语句queryForMap(),将查询结果集封装到映射集中,并将列名用作键。将此记录封装为映射集*注意:此方法查询的结果集长度只能是1查询世界()查询结果。将结果集封装到列表集*注意:将每个记录封装到映射集中,然后将映射集加载到用于查询()查询结果的列表集中 。将结果封装为JavaBean对象查询的参数:行映射器*通常我们使用BeanPropertyRowMapper来实现类 。 新的BeanPropertyRowMapper & lt可以完成数据到JavaBean的自动封装。类型>(类型。类)查询对象()查询结果,将结果封装为对象*通常用于聚合函数execute()的查询可用于执行任何SQL语句 ,而DDL语句通常使用实例Packagecom.ityouxin.JDBC模板执行;导入com . I touxin . data source . util . DataSourceutil。导入org . springframework . JDBC . core . JDBC TEMPLATE;公共类JdbcTemplateDemo1 {公共静态空主(字符串[)参数){JdbcTemplate JdbcTemplate =新jdbcTemplate(数据源工具. getdata source());字符串sql= "更新emp集薪资=?其中id=?;jdbcTemplate.update(sql,8000 ,1);} } CURD练习样本要求:1。将数据编号1的薪资修改为100002。添加记录3。删除刚刚添加的记录4。查询id为1的记录,并将其打包到地图集5中 。查询所有记录并将其打包到列表6中。查询所有记录并将其打包到Emp对象列表集7中。查询测试代码包组件的记录总数。ITYOUXIN。JDBC模板;导入com . I touxin . data source . util . DataSourceutil。导入com . I tyouxin . entity . Emp;以前导入组织;导入组织. JUnit . test;import org . springframework . JDBC . core . BinPropertyRowMapper;导入org . springframework . JDBC . core . JDBC TEMPLATE;import org . springframework . JDBC . core . RowMapper;导入Java . SQL . ResultSet;导入Java . SQL . SqLexception;导入Java . util . list;导入Java . util . Map;public class jdb template demo 2 {//JUNit单元测试框架,它允许方法独立地执行JdbcTemplate jdbcTemplate@Beforepublic void before()。}/* * *修改数据号1的薪资为10000 */@ testpublic void test 01(){ string SQL = " updateempsetsalary =?其中id=?;jdbcTemplate.update(sql,10000,1);}/* * *添加记录*/@ testpublic void test02(){ stringsql = " insert into EMP values(null , ?,?, ?,?,?)";int count = jdb template . update(SQL," Guo Jing "," female ",10000," 2019-08-15 ",1);System.out.println(计数);}/* * *删除刚刚添加的记录*/@ testpublic void test 03(){ stringsql = " delete from empwhere name =?;int count = jdb template . update(SQL ," Guo Jing ");System.out.println(计数);}/* * *查询id为1的记录,并将其封装到地图集合*/@ testpublic void test04(){ stringsql = " select * from empwhere id =?;地图和lt。字符串,对象>;map = jdbcTemplate . queryFOrmap(SQL,1);System.out.println(地图);}/* * *查询所有记录并将它们打包为列表*/@ testpublic void test05(){ string SQL = " select * from EMP ";列表和lt。地图和lt。字符串,对象>;>;maps = JdbcTemplate . queryForlist(SQL);System.out.println(地图);}/* * *查询所有记录并将它们封装到Emp对象的列表集合*/@ testpublic void test 06(){ stringsql = " select * froEmp ";列表和lt。Emp>。emps = jdbcTemplate.query(sql,新的行映射器<。Emp>。(){@Overridepublic Emp映射行(ResultSet resultSet,int i)引发SQLException { Emp新Emp();EMP . SetID(ResultSet . GetInt(" id "));EMP . SetName(resultSet . GetString(“名称”));EMP . SetGender(resultSet . GetString(“性别”));EMP . SetPayl(结果集.加倍(“薪金”));EMP . SetJoin _ data(ResultSet . GetDate(“join _ Date”));EMP . SetDept _ id(ResultSet . GetInt(“Dept _ id”));返回电磁脉冲;} });system . out . println(emps);}/* * *查询所有记录并将它们封装到Emp对象的列表集合*/@ testpublic void test 07(){ stringsql = " select * froEmp ";列表和lt。Emp>。emps = jdbcTemplate.query(sql,新的BeanPropertyRowMapper<。Emp>。(Emp . class));system . out . println(emps);}/* * *查询总数*/@ testpublic void test08(){ stringsql = "从emp中选择count(*);整数总计= jdbcTemplate . queryForObject(SQL,integer . class);System.out.println(总计);}} 微信、支付宝二码合一扫码支付实现思路(java)

(责任编辑:编程开发己出)