java 公用的增删改查

来源:互联网 发布:算法之美 pdf 编辑:程序博客网 时间:2024/04/28 22:55

  使用公共的增删改查,可以节省时间,也可以减少代码量。


在BaseDao 接口中:


public interface BaseDao {/** * 通用的增刪改方法 * @param sql * @param param * @return */public int excutesql(String sql,Object[]param);/** * 通用的改方法 * @param sql     需要查詢的sql語句 * @param classt  需要返回的字符集 * @param param   參數 * @return */public List excuteQuery(String sql, Class classt,Object...param);}

在BaseDaoImpl中:

public class BaseDaoImpl implements BaseDao{/** * 通用的增删改的方法 */public int exetesql(String sql, Object[] param) {//获取连接Connection connection = JDBCUtil.connection();try {PreparedStatement p = connection.prepareStatement(sql);//设置参数for(int i=0;i<param.length;i++){p.setObject(i+1, param[i]);}int i=p.executeUpdate();return i;} catch (SQLException e) {e.printStackTrace();}return 0;}/** * 通用的查询方法 */public List excuteQuery(String sql, Class classt, Object... param) {List list = new ArrayList(); //1.获取链接Connection connection = JDBCUtil.connection();try {//2.批处理PreparedStatement p = connection.prepareStatement(sql);//3.设置参数if(null!=param){for(int i=0;i<param.length;i++){p.setObject(i+1, param[i]);}}//4.获取结果集ResultSet r= p.executeQuery();//5.获取对象  Object obj;//6.获取字节码对象里面的属性     Field[] fields = classt.getFields();    //7。得到结果集的字段数,字段名     ResultSetMetaData metaData = r.getMetaData();    // System.out.println("");     //8.循环输出     int columnCount = metaData.getColumnCount();//9.获取列的总数     System.out.println(columnCount);     while(r.next()){    obj = classt.newInstance();    //10.循环列    for(int i=1;i<= columnCount; i++){              //11.获取列    String columnLabel = metaData.getColumnLabel(i);//别名    String columnName = metaData.getColumnName(i);//列名        System.out.println("columnLabel: "+columnLabel);    System.out.println("columnName: "+columnName);    //12.根据属性名称获取对应的属性    if(null!=columnLabel){    Field df = classt.getDeclaredField(columnName);        if(null!=df){    df.setAccessible(true);//13.将私有的打开    df.set(obj, r.getObject(columnLabel));//14.设值,设列名    }    }    }    //15.添加到list里面    list.add(obj);     }} catch (SQLException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();}return list;}

在JDBCUtil工具类:

public class JDBCUtil {static String NAME="root";static String PASS="root";static String URL="jdbc:mysql://127.0.0.1:3306/mysql";static String DRIVER="com.mysql.Driver";static{//1.读取properties文件InputStream resourceAsStream = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");//2.获取一个properties对象Properties properties = new Properties();//3.判断不为空if(resourceAsStream!=null){try {properties.load(resourceAsStream);NAME=properties.getProperty("NAME");PASS=properties.getProperty("PASS");URL=properties.getProperty("URL");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}  public static Connection connection()  {  Connection con=null;  try {Class.forName("DRIVER");con=DriverManager.getConnection(URL, NAME, PASS);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}  return con;}

jdbc.properties配置文件:

name=rootpass=rooturl=jdbc:mysql://127.0.0.1:3306/mysqldriver=com.mysql.jdbc.Driver
如果我需要查询数据库的 Commodity表时:1.CommodityDao 接口先继承BaseDao类,里面可以什么都不用写
public interface CommodityDao extends BaseDao {}
2.在CommodityDaoImpl 实现类中也继承相应的接口
public class CommodityDaoImpl extends BaseDaoImpl implements CommodityDao{
}
3.在service层调用dao层
public interface CommodityService {public List<CommodityEntity> getCommodityList();}
public class CommodityServiceImpl implements CommodityService {CommodityDao commodityDao=new CommodityDaoImpl();public List<CommodityEntity> getCommodityList(){String sql="select * from CommodityEntity"; List<CommodityEntity> list = commodityDao.excuteselect(sql, CommodityEntity.class, new Object[]{});return list;}
4.最后直接在action层掉用service层就可以了
// 调用service,调用对应的方法CommodityService commodityService = new CommodityServiceImpl();
                                             
1 0
原创粉丝点击