java DAO类使用说明

java DAO class generate help

工具 java DAO

诚朴java DAO类使用说明

诚朴java DAO类生成系统,由深圳市诚朴科技有限公司研发,交流QQ群:744820282。


jar依赖和连接数据库

  1. 下载依赖的jar,a、log4j.jar b、commons-lang.jar,本公司使用的版本是log4j-1.2.16.jar、commons-lang-2.6.jar
  2. 从本站下载chengput_rumtime.jar
  3. 实现RuntimeProvider接口。demo下载

数据表操作示例

示例使用的数据表(tbl_admin_users)如下:

CREATE TABLE `tbl_admin_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(30) CHARACTER SET latin1 NOT NULL,
  `user_name_cn` varchar(30) CHARACTER SET utf8 NOT NULL,
  `password` varchar(50) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DAO生成时,均使用默认配置,会生成两个文件AdminUsersDao.java、AdminUsersInfo.java

AdminUsersDao

package com.chengput.demo.dao;

import com.chengput.frame.RuntimeProvider;
import com.chengput.frame.DaoUtils;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.rowset.CachedRowSet;

import org.apache.log4j.Logger;

/**
 *
 * 本类为代码生成工具生成的。
 * 建议不要直接修改。否则下次重新生成时,会导致代码被覆盖到。
 * 代码生成工具版本v0.1.0
 * 业务版本v1.0
 *
 */
public class AdminUsersDao {


    private static Logger logger = Logger.getLogger(AdminUsersDao.class);
    private RuntimeProvider provider;

    public AdminUsersDao(RuntimeProvider provider) {
        this.provider = provider;
    }

    public int insert(AdminUsersInfo info) {
        int affect = -1;
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = provider.getConnection();
            stmt = conn.createStatement();
            String sql = "insert into tbl_admin_users(`id`,`user_name`,`user_name_cn`,`password`)";
            sql += " values(" + info.id + ",'" + DaoUtils.escapeSql(info.user_name) + "','" + DaoUtils.escapeSql(info.user_name_cn) + "','" + DaoUtils.escapeSql(info.password) + "');";
            affect = stmt.executeUpdate(sql);
        }
        catch (SQLException ex) {
            logger.error("", ex);
        }
        finally {
            DaoUtils.close(stmt);
            DaoUtils.close(conn);
        }
        return affect;
    }

    public long insertFetchId(AdminUsersInfo info) {
        long id = -1;
        int affect = -1;
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = provider.getConnection();
            stmt = conn.createStatement();
            String sql = "insert into tbl_admin_users(`id`,`user_name`,`user_name_cn`,`password`)";
            sql += " values(" + info.id + ",'" + DaoUtils.escapeSql(info.user_name) + "','" + DaoUtils.escapeSql(info.user_name_cn) + "','" + DaoUtils.escapeSql(info.password) + "');";
            affect = stmt.executeUpdate(sql);
            if(affect > 0) {
                String sqlStr = "select last_insert_id() as id";
                rs = stmt.executeQuery(sqlStr);
                if (rs.next()) {
                    id = rs.getLong("id");
                }
            }
        }
        catch (SQLException ex) {
            logger.error("", ex);
        }
        finally {
            DaoUtils.close(rs);
            DaoUtils.close(stmt);
            DaoUtils.close(conn);
        }
        return id;
    }

    public int update(AdminUsersInfo info) {
        int affect = -1;
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = provider.getConnection();
            stmt = conn.createStatement();
            String sql = "update tbl_admin_users set `user_name`='" + DaoUtils.escapeSql(info.user_name) + "',`user_name_cn`='" + DaoUtils.escapeSql(info.user_name_cn) + "',`password`='" + DaoUtils.escapeSql(info.password) + "' where `id`=" + info.id + " ";
            affect = stmt.executeUpdate(sql);
        }
        catch (SQLException ex) {
            logger.error("", ex);
        }
        finally {
            DaoUtils.close(stmt);
            DaoUtils.close(conn);
        }
        return affect;
    }

    public int delete(AdminUsersInfo info) {
        int affect = -1;
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = provider.getConnection();
            stmt = conn.createStatement();
            String sql = "delete from tbl_admin_users where `id`=" + info.id + " ";
            affect = stmt.executeUpdate(sql);
        }
        catch (SQLException ex) {
            logger.error("", ex);
        }
        finally {
            DaoUtils.close(stmt);
            DaoUtils.close(conn);
        }
        return affect;
    }

    public AdminUsersInfo queryInfo(AdminUsersInfo info) {
        AdminUsersInfo ret = null;
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = provider.getConnection();
            stmt = conn.createStatement();
            String sql = "select * from tbl_admin_users where `id`=" + info.id + " ";
            rs = stmt.executeQuery(sql);
            if(rs.next()) {
                ret = wrapper(rs);
            }
        }
        catch (SQLException ex) {
            logger.error("", ex);
        }
        finally {
            DaoUtils.close(rs);
            DaoUtils.close(stmt);
            DaoUtils.close(conn);
        }
        return ret;
    }

    public static AdminUsersInfo wrapper(ResultSet rs) throws SQLException {
        AdminUsersInfo info = new AdminUsersInfo();
        info.id = rs.getInt("id");
        info.user_name = rs.getString("user_name");
        info.user_name_cn = rs.getString("user_name_cn");
        info.password = rs.getString("password");
        return info;
    }

    public static AdminUsersInfo wrapper2(CachedRowSet rs) throws SQLException {
        AdminUsersInfo info = new AdminUsersInfo();
        info.id = rs.getInt("id");
        info.user_name = rs.getString("user_name");
        info.user_name_cn = rs.getString("user_name_cn");
        info.password = rs.getString("password");
        return info;
    }
}		
		

AdminUsersInfo

package com.chengput.demo.dao;


import java.util.Date;

/**
 *
 * 本类为代码生成工具生成的。
 * 建议不要直接修改。否则下次重新生成时,会导致代码被覆盖到。
 * 代码生成工具版本v0.1.0
 * 业务版本v1.0
 *
 */
public class AdminUsersInfo implements Cloneable {
    public int id;
    public String user_name;
    public String user_name_cn;
    public String password;

    public Object clone() throws CloneNotSupportedException{
        return super.clone();
    }

    public void set(AdminUsersInfo ref) {
        this.id = ref.id;
        this.user_name = ref.user_name;
        this.user_name_cn = ref.user_name_cn;
        this.password = ref.password;
    }
}

插入数据代码如下:

		AdminUsersDao dao = new AdminUsersDao(new DemoProvider());
		AdminUsersInfo info = new AdminUsersInfo();
		info.user_name = "chengput";
		info.user_name_cn = "诚朴科技";
		info.password = "123456";		
		int affect = dao.insert(info);
		
		if(affect > 0) {
			System.out.println("成功");
		}
		else {
			System.out.println("失败");			
		}

其他增、删、改等数据库操作也是类似