分页数据实体类
public class PageBean implements Serializable {private int rowsPerPage = 15;private int rowsNum;//行数private int maxPage;//页数private int pageNum;//页码
}
Emp实体类
@Data
public class Emp implements Serializable {private Long id;private String username;private String realname;private transient String password;private Date birth;private Boolean sex;private Long deptId;private Dept dept;
}
Dept实体类
@Data
public class Dept implements Serializable {private Long id;private String name;private String address;
}
JdbcUtil工具类
public class JdbcUtil {private JdbcUtil() {}private static DataSource dataSource;static {try {Properties properties = new Properties();InputStream inputStream = JdbcUtil.class.getResourceAsStream("jdbc.properties");properties.load(inputStream);DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(properties.getProperty("jdbc.driver"));ds.setUrl(properties.getProperty("url"));ds.setUsername(properties.getProperty("username"));ds.setPassword(properties.getProperty("password"));dataSource = ds;} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection() throws Exception {if (dataSource != null)return dataSource.getConnection();return null;}public static void close(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) throws Exception {try {if (resultSet != null)resultSet.close();} finally {try {if (preparedStatement != null)preparedStatement.close();} finally {if (connection != null)connection.close();}}}public static PreparedStatement createPreparedStatement(Connection connection, String sql, Object... params) throws Exception {if (connection != null) {PreparedStatement ps = connection.prepareStatement(sql);if (params != null && params.length > 0) {for (int i = 0; i < params.length; i++) {ps.setObject(i + 1, params[i]);}}return ps;}return null;}public static ResultSet executeQurey(Connection connection, String sql, Object... params) throws Exception {ResultSet res = null;if (connection != null) {PreparedStatement ps = createPreparedStatement(connection, sql, params);if (ps != null) {res = ps.executeQuery();}}return res;}public static int executeUpdate(Connection connection, String sql, Object... params) throws Exception {int res = 0;if (connection != null) {PreparedStatement ps = createPreparedStatement(connection, sql, params);if (ps != null) {res = ps.executeUpdate();}}return res;}
}
StringUtil工具类
public class StringUtil {private StringUtil(){}public static boolean isBlank(String str){return str==null||str.trim().length()<1;}public static boolean nonBlank(String str){return !isBlank(str);}
}
Emp 数据添加
public int insert(Emp data) {int res = 0;if (data == null){throw new RuntimeException("参数异常");}if (StringUtil.isBlank(data.getUsername()) || StringUtil.isBlank(data.getRealname())||StringUtil.isBlank(data.getPassword())){throw new RuntimeException("参数不合法");}if (data.getDept()==null){throw new RuntimeException("参数不合法");}ArrayList<Object> params = new ArrayList<>();StringBuffer sb = new StringBuffer("insert into tbl_emp(username,realname,password,dept_id");if (data.getBirth()!=null){sb.append(",birth");}if (data.getSex()!=null) {sb.append(",sex");}sb.append(") values (?,?,?,?");params.add(data.getUsername());params.add(data.getRealname());params.add(data.getUsername());params.add(data.getDeptId());if (data.getBirth()!=null){sb.append(",?");params.add(data.getBirth());}if (data.getSex()!=null){sb.append(",?");params.add(data.getSex());}String sql = sb.toString();Connection conn =null;try {conn = JdbcUtil.getConnection();res = JdbcUtil.executeUpdate(conn,sql,params);} catch (Exception e) {throw new RuntimeException(e);} finally {try {JdbcUtil.close(null,null,conn);} catch (Exception e) {throw new RuntimeException(e);}}return res;
}
Emp 分页查询
public List<Emp> selectByPage(Emp data, PageBean pages) {List<Emp> res = new ArrayList<>();List<Object> params = new ArrayList<>();StringBuffer sb = new StringBuffer("select e.*,d.name,d.address from tbl_emp e join tbl_dept d on e.dept_id = d.id where 1=1");if (data!=null){if (data.getId()!=null){sb.append(" and id = ?");params.add(data.getId());}if (StringUtil.nonBlank(data.getUsername())){sb.append(" and username like ?");params.add(data.getUsername());}if (StringUtil.nonBlank(data.getRealname())){sb.append(" and realname like ?");params.add(data.getRealname());}if (StringUtil.nonBlank(data.getPassword())){sb.append(" and password like ?");params.add(data.getPassword());}if (data.getDeptId()!=null){sb.append(" and dept_id = ?");params.add(data.getDeptId());}if (data.getSex()!=null){sb.append(" and sex = ");params.add(data.getSex());}if (data.getBirth() != null){sb.append(" and birth = ?");params.add(data.getBirth());}}String sql = sb.toString();Connection conn = null;ResultSet rs = null;try {conn = JdbcUtil.getConnection();if (pages!=null&& pages.getRowsPerPage()>0){if (pages.getPageNum()<1){pages.setRowsNum(1);}if (pages.getMaxPage()<1){String sql2 = "select count(*) "+sql.substring(sql.indexOf(" from "));rs = JdbcUtil.executeQurey(conn,sql2,params.toArray());if (rs.next()){int rowsNum = rs.getInt(1);if (rowsNum<1){return res;}int maxPage = rowsNum/pages.getRowsPerPage();if (rowsNum%pages.getRowsPerPage()!=0)maxPage++;pages.setRowsNum(rowsNum);pages.setMaxPage(maxPage);}}if (pages.getPageNum()>pages.getMaxPage()){pages.setPageNum(pages.getMaxPage());}int begin = (pages.getPageNum()-1)*pages.getRowsPerPage();sql = sql + " limit " + begin + ","+pages.getRowsPerPage();}rs = JdbcUtil.executeQurey(conn,sql,params.toArray());while (rs.next()){Emp emp = new Emp();emp.setId(rs.getLong("id"));emp.setUsername(rs.getString("username"));emp.setRealname(rs.getString("realname"));emp.setPassword(rs.getString("password"));emp.setDeptId(rs.getLong("dept_id"));emp.setBirth(rs.getDate("birth"));emp.setSex(rs.getBoolean("sex"));Dept dept = new Dept();dept.setId(rs.getLong("dept_id"));dept.setName(rs.getString("name"));dept.setAddress(rs.getString("address"));emp.setDept(dept);res.add(emp);}} catch (Exception e) {throw new RuntimeException(e);}finally {try {JdbcUtil.close(rs,null,conn);} catch (Exception e) {throw new RuntimeException(e);}}return res;
}