数据库增删改查打包在项目中,我们将连接后台数据库。那么数据库的增删改查操作会经常用到,那么我们能不能抽出通用的部分,组成一个工具类呢?咱们试试吧。CRUD方法封装publicclassCRUDUtils{/***@Description:增删改sql封装*@Param:[sql:具体的sql语句;params:字段信息(使用prepareStatement)]*@return:int*/publicstaticintupdate(Stringsql,Object...params){Connectioncon=null;PreparedStatementps=null;结果集rs=null;尝试{//1。获取连接,DbUtil工具类的获取见文末。con=DbUtil.getConn();//2。预处理sql语句ps=con.prepareStatement(sql);//3.params.length获取可变长度的长度,进行?填充(inti=0;iTquery(Stringsql,IResultSetHandlerhandler,Object...params){连接con=null;PreparedStatementps=null;结果集rs=null;尝试{//1。获取连接con=DbUtil.getConn();//2。执行查询ps=con.prepareStatement(sql);for(inti=0;i{/***@Description:接口中的抽象方法,实现结果Set处理,返回指定类型*@Param:[rs]*@return:T*/Thandle(ResultSetrs)throwsException;}接口实现类1,bean/***@description:IResultSetHandler的实现类一个,返回一个javaBean**/publicclassBeanHandlerimplementsIResultSetHandler{privateClass克拉兹;/**获取传入类对象的字节码信息*/publicBeanHandler(Classclazz){this.clazz=clazz;}@OverridepublicThandle(ResultSetrs)throwsException{//如果发现什么if(rs.next()){//首先根据wordSection代码信息创建一个对象,它会返回Tobj=clazz.newInstance();//获取类信息BeanInfobeanInfo=Introspector.getBeanInfo(clazz,Object.class);//获取类PropertyDescriptor[]中的属性描述符pds=beanInfo.getPropertyDescriptors();//遍历描述符,封装查询结果的对象信息for(PropertyDescriptorpd:pds){//获取查询结果集对应字段的信息Stringname=pd.获取名称();对象对象=rs.getObject(pd.getName());//调用setter写入信息pd.getWriteMethod().invoke(obj,object);}返回对象;}//找不到直接返回nullreturnnull;}}接口实现类2,beanList/***@program:Dream01*@description:IResultSetHandler的实现类之一,返回javaBean的集合*@author:stop.yc*@create:2022-03-2922:28**/publicclassBeanListHandleimplementsIResultSetHandler>{privateClassclazz;//获取当前对象的字节码信息publicBeanListHandle(Classclazz){this.clazz=clazz;}@OverridepublicListhandle(ResultSetrs)throwsException{//通过字节码信息获取类信息BeanInfobeanInfo=Introspector.getBeanInfo(clazz,Object.class);//通过类获取属性描述符,比如getter和setterPropertyDescriptor[]pds=beanInfo.getPropertyDescriptors();//类列表Listlist=newArrayList<>();//继续遍历while(rs.next()){//通过对象信息创建对象Tobj=clazz.newInstance();for(PropertyDescriptorpd:pds){//获取对应字段的信息Objectobject=rs.getObject(pd.getName());//获取设置器pd.getWriteMethod().invoke(obj,object);}list.add(obj);}返回列表;}}MainfunctiontestpublicclassMain{publicstaticvoidmain(String[]args){StringqSql="select*from`t_user`where`userName`=?";StringuserName="张三";//User是一个自定义类。用户user=CRUDUtils.query(qSql,newBeanHandler<>(User.class),userName);Stringsql="select*from`t_user`where`gender`=0";//Listlist=CRUDUtils.query(sql,newBeanListHandle<>(User.class));//update语句就OK了,只有一个StringupdateSql="isnertinto`t_user`(`userName`,`gender`)values('李四','Male')";intret=CRUDUtils.update(updateSql);}}文章中的工具类地址数据库工具类