实在不好意思晾出来,只是想听听高手们的意见,我想把下面的接口应用到Users表中,接着用JSP技术实现一个对Users表进行CRUD的web页面。下面是代码:package com.company.dao;import java.util.*;import com.comany.entity.Users;public interface UsersDao { /**
 * 查询Users表中所有记录
 * @return 存放Users实体类对象的ArrayList对象
 */
public List<Users> checkAll();
/**
 * 根据userID字段查询Users表中的记录
 * @param userID Users表中userID字段
 * @return 存放Users实体类对象的ArrayList对象
 */
public List<Users> checkByID(int userID);
/**
 * 根据userName字段查询Users表中的记录
 * @param userName Users表中userName字段
 * @return 存放Users实体类对象的ArrayList对象
 */
public List<Users> checkByName(String userName);
/**
 * 根据userName和password字段查询Users表中的记录
 * @param userName Users表中userName字段
 * @param password Users表中password字段
 * @return 存放Users实体类对象的ArrayList对象
 */
public List<Users> checkByNameAndPwd(String userName,String password);
/**
 * 根据status字段查询Users表中的记录
 * @param status Users表中的Status字段
 * @return 存放Users实体类对象的ArrayList对象
 */
public List<Users> checkByStatus(int status);
/**
 * 向Users表中插入一条数据
 * @param userName Users表中userName字段
 * @param password Users表中password字段
 * @param status Users表中的Status字段
 * @return 数据库受影响的行数
 */
public int insertOne(String userName,String password,int status);
/**
 * 根据userID字段删除Users表中记录
 * @param userID Users表中userID字段
 * @return 数据库受影响行数
 */
public int deleteByID(int userID);
/**
 * 根据userName字段删除Users表中记录
 * @param userName Users表中userName字段
 * @return 数据库受影响行数
 */
public int deleteByName(String userName);
/**
 * 根据userName和password字段删除Users表中记录
 * @param userName Users表中userName字段
 * @param password Users表中password字段
 * @return 数据库受影响行数
 */
public int deleteByNameAndPwd(String userName,String password);
/**
 * 根据userID字段更新Users表中记录
 * @param userID Users表中userID字段
 * @return 数据库受影响行数
 */
public int updateByID(int userID,String userName,String password,int status);

}
不知道这样写行不行?高手请支招!

解决方案 »

  1.   

    封装的接口基本满足需求,但是要确保user表中的列不会再改变了。
    一旦突然又加入一个列你这个接口改动就不小了。
      

  2.   

    方法中为啥要那么多参数,一个User对象的引用做参数不行?
      

  3.   

    好吧那我就打击你一下。1.把接口方法的public 关键字全都去掉。interface的方法默认为public.
    2.把import的类全部写出来,不要写成*。这样代码一多,根本不知道你引用了什么类
    3.String userName,String password,int status改成
    String userName, String password, int status。,后面要加空格。
    4./**
         * 查询Users表中所有记录
         * @return 存放Users实体类对象的ArrayList对象
         */
    注释写成
    /**
         * 查询Users表中所有记录
         *
         * @return 存放Users实体类对象的ArrayList对象
         */
    comment和下面参数之间要加一个空行5.你很多方法都可以传递一个对象。我相信你从前台mvc拿到的也是一个对象吧。
      

  4.   

    6.check居然表示查询????用select或者get比较好把check我以为是存在性check
      

  5.   

        说实话  代码真烂    没有拓展性   你传递参数的时候 为什么不传递对象   public int updateByID(int userID,String userName,String password,int status);  你的这个根本就是乱写. 如果还有字段 你就继续加啊
    public List<Users> checkByID(int userID); 难道你数据库用户id有多条?   需要返回一个List嘛 如果你只有一个唯一ID   你需要返回List嘛     你直接返回User 不就行了   你返回List  过后循环遍历只遍历一条  也是需要时间的  效率低   
      

  6.   

    接口本身没问题,
    有点建议
    check这个单词用的有点词不达意,用query或者直接用get/fetch更好个人觉的good luck
      

  7.   

    我首先声明,我是菜鸟。
    我想说的是,我觉得参数不能那样写,固定死了反而不好,建议使用Hash Map。接口里边的方法好像多了点吧。这都快成具体类来。
      

  8.   


    最好不要用map做参数,
    能用bean最好用bean
    否则,代码里都是map,然后是塞满map的list
    后果....你懂的,
    不懂?

    会懂的good luck
      

  9.   

    自从发现使用Map 传递参数不错后,现在代码里到处都是Map。确实如你所说代码里都是map,然后是塞满map的list
      

  10.   


    public interface IDAO { /**
     * 查询 要求传入查询表对应的BeanCalss
     * 
     * @param SQL
     *            sql查询语句
     * @param clazz
     *            查询表对应的BeanCalss
     * @return 返回该查询的结果集List
     * @throws CRMDBConnException
     * @throws CRMSQLException
     */
    public List findAll(final String SQL, Class clazz)
    throws CRMDBConnException, CRMSQLException; /**
     * 查询  要使用该方法要求重写根接口的子接口(I***DAO)
     * 
     * @param SQL
     *            sql查询语句
     * @return 返回该查询的结果集List
     * @throws CRMDBConnException
     * @throws CRMSQLException
     */
    public List findAll(final String SQL) throws CRMDBConnException,
    CRMSQLException; /**
     * 按表主键查询 要求传入 id和表对应的BeanCalss
     * 
     * @param SQL
     *            sql查询语句
     * @param key
     *            主键值
     * @param clazz
     *            查询表对应的BeanCalss
     * @return Object 传入BeanCalss 对应的实例
     * @throws CRMDBConnException
     * @throws CRMSQLException
     */
    public Object findByPrimaryKey(final String SQL, final Object key,
    Class clazz) throws CRMDBConnException, CRMSQLException; /**
     * 按表主键查询  要使用该方法要求重写根接口的子接口(I***DAO)
     * 
     * @param SQL
     *            sql查询语句
     * @param key
     *            主键值
     * @return Object
     * @throws CRMDBConnException
     * @throws CRMSQLException
     */
    public Object findByPrimaryKey(final String SQL, final Object key)
    throws CRMDBConnException, CRMSQLException; /**
     * 多条件查询 参数的Object数组和表对应的BeanCalss
     * 
     * @param SQL
     *            sql查询语句
     * @param params
     *            参数数组
     * @param clazz
     *            表对应的BeanCalss
     * @return List 查询对应的List结果集
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public List findByCondition(final String SQL, final Object[] params,
    Class clazz) throws CRMDBConnException, CRMSQLException; /**
     * 多条件查询   要使用该方法要求重写根接口的子接口(I***DAO)
     * 
     * @param SQL
     *            sql查询语句
     * @param params
     *            参数数组
     * @return 查询结果的List
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public List findByCondition(final String SQL, final Object bean)
    throws CRMDBConnException, CRMSQLException; /**
     * 批量新增数据  要使用该方法要求重写根接口的子接口(I***DAO)
     * 
     * @param SQL
     *            sql查询语句
     * @param params
     *            bean数组
     * @return 执行结果
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public int batchInsert(final String SQL, final Object[] beans)
    throws CRMDBConnException, CRMSQLException; /**
     * 新增数据
     * 
     * @param SQL
     *            sql查询语句
     * @param params
     *            参数数组
     * @return 执行结果
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public int insert(final String SQL, final Object[] params)
    throws CRMDBConnException, CRMSQLException; /**
     * 要使用该方法要求重写根接口的子接口(I***DAO)
     * 
     * @param SQL
     *            sql新增语句
     * @param bean
     *            表对应的Bean
     * @return 执行结果
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */ public int insert(final String SQL, final Object bean)
    throws CRMDBConnException, CRMSQLException; /**
     * 更新一条数据
     * @param SQL
     *            sql更新语句
     * @param params
     *            参数数组
     * @return 执行结果
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public int update(final String SQL, final Object[] params)
    throws CRMDBConnException, CRMSQLException; /**
     * 要使用该方法要求重写根接口的子接口(I***DAO)
     * @param SQL
     *            sql更新语句
     * @param bean
     *            更新表对应的bean实例
     * @return 执行结果
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public int update(final String SQL, final Object bean)
    throws CRMDBConnException, CRMSQLException; /**
     * 删除单条数据
     * 
     * @param SQL
     *            sql删除语句
     * @param id
     *            主键编号
     * @return 执行结果
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public int delete(final String SQL, final Object id)
    throws CRMDBConnException, CRMSQLException; /**
     * 要使用该方法要求重写根接口的子接口(I***DAO)
     * 批量删除
     * 
     * @param SQL
     *            sql语句
     * @param ids
     *            主键数组
     * @return 执行状态
     * @throws CRMDBConnException
     *             数据库连接异常
     * @throws CRMSQLException
     *             sql语句执行错误
     */
    public int batchDelete(final String SQL, final Object ids)
    throws CRMDBConnException, CRMSQLException;
    }
      

  11.   

    谢谢大家的点评和支持,当然我更喜欢各位的打击,特别是rainsilence同志热情犀利的跟贴:)说实话我是个才学两三天Java的菜鸟,用check这个单词欠妥我接受了,但为什么不用类对象代替字段,我是这样想的:这个接口最终要放在业务层内实现,它接受用户输入作为参数传递的,如果用类对象的setter,getter方法我实在不知道怎么搞,各位请指示!3Q!
      

  12.   

    代码注释里的ArrayList全都改成List,因为返回类型就是List类型,而且具体是什么list也没人关心。
      

  13.   

    这个不应该放在业务(business)层,应该放在dao层,你可以直接用类对象,或者定义dto用来传值,业务比较复杂的时候应该用dto传递传值!!
      

  14.   

    谢谢大家,看jinlin1989写得那么辛苦我就结贴了吧!