详细整理分层开发步骤!
不點藍字,我們哪來故事?
一、創建數據庫,在數據庫中創建表
二、創建java項目(起名要有意義,eg:petSys)
三、在項目中新建包,包名為:cn.bdqn.petSys.entity
四、在cn.bdqn.petSys.entity包中新建實體類,實體類是根據數據表而來,一個表對應一個實體類,數據庫中的字段對應類中的屬性
五、選中項目,在項目中新建一個文件夾,起名為lib,將sqlserver的jar文件復制到該目錄下面,并且右擊該jar文件,選擇Build pathadd to build path.
六、新建包cn.bdqn.petSys.utils,在該包中新建一個BaseDao,用來連接數組庫,BaseDao的代碼如下:
public?class?BaseDao?{//連接數據庫public?Connection getConn(){Connection conn = null;try?{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName = petdb","sa","123456");} catch?(ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch?(SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return?conn;}//關閉連接public?void?closeConn(Connection conn,PreparedStatement pre,ResultSet rs){try?{if?(rs!=null) {rs.close();}if?(pre!=null) {pre.close();}if?(conn!=null) {conn.close();}} catch?(Exception e) {// TODO:?handle exception}}}七、新建包cn.bdqn.petSys.dao,在包中新建接口,一個實體類對應一個接口,例如:ICatDao(起名規范:I+實體類名+Dao),在該接口中寫需要實現的功能接口
增刪改,返回類型為int.參數類型為實體,例如:int addCat(Cat cat);
根據編號查詢,返回類型為實體,參數類型為int,例如:Cat findCatById(int cid);
查詢全部,返回類型為泛型集合(List<Cat>),例如:List<Cat> findCatAll();
注意:除增刪改外,返回類型取決于查詢的結果集,如果返回1條以上的結果集,返回類型為List集合,如果返回1條結果集,返回類型為實體(Cat)
例如:
//根據編號查詢Cat findCatById(int?cid);//查詢全部List<Cat> findCatAll();//根據名稱模糊查詢List<Cat> findCatByName(String name);//根據姓名和密碼查詢Cat findCatByNameAndPass(String name,String pass);八、新建包cn.bdqn.petSys.dao.impl,)(該包為dao層的實現類所在的包),在包內新建實現類,CatDaoImpl,該類需要實現dao層的ICatDao,代碼如下:
public?class?CatDaoImpl?implements?ICatDao?{BaseDao base = new?BaseDao();Connection conn = base.getConn();PreparedStatement pre = null;ResultSet rs = null;//添加@Overridepublic?int?addCat(Cat cat)?{String sql = "insert into cat values(?,?,?,?,?);";int?rel = 0;try?{pre = conn.prepareStatement(sql);pre.setInt(1,cat.getCid());pre.setString(2, cat.getCname());pre.setString(3,cat.getCpass());pre.setInt(4,cat.getClove());pre.setString(5, cat.getCsex());rel = pre.executeUpdate();} catch?(SQLException e) {e.printStackTrace();}return?rel;}//修改@Overridepublic?int?updateCat(Cat cat)?{String sql = "update cat set cname = ?,cpass = ?,clove = ? csex = ? where cid = ?";int?rel = 0;try?{pre = conn.prepareStatement(sql);pre.setString(1, cat.getCname());pre.setString(2,cat.getCpass());pre.setInt(3,cat.getClove());pre.setString(4, cat.getCsex());pre.setInt(5,cat.getCid());rel = pre.executeUpdate();} catch?(SQLException e) {e.printStackTrace();}return?rel;}//刪除@Overridepublic?int?delCat(Cat cat)?{String sql = "delete from cat where cid = ?";int?rel = 0;try?{pre.setInt(1,cat.getCid());rel = pre.executeUpdate();} catch?(SQLException e) {e.printStackTrace();}return?rel;}//根據編號查詢@Overridepublic?Cat findCatById(int?cid)?{// TODO Auto-generated method stubreturn?null;}//查詢全部@Overridepublic?List<Cat> findCatAll()?{return?null;}//根據名稱模糊查詢@Overridepublic?List<Cat> findCatByName(String name)?{String sql = "select * from cat where cname like ?";List<Cat> clist = new?ArrayList<Cat>();try?{pre = conn.prepareStatement(sql);pre.setString(1, "%"+name+"%");rs = pre.executeQuery();while(rs.next()){Cat cat = new?Cat();cat.setCid(rs.getInt(1));cat.setCname(rs.getString(2));cat.setCpass(rs.getString("cpass")); //或者3cat.setCsex(rs.getString("csex"));cat.setClove(rs.getInt("clove"));clist.add(cat);}} catch?(SQLException e) {e.printStackTrace();}finally{base.closeConn(conn, pre, rs);}return?clist;}//根據名稱和密碼查詢@Overridepublic?Cat findCatByNameAndPass(String name, String pass)?{// TODO Auto-generated method stubreturn?null;}}九、新建包cn.bdqn.petSys.service,在該包中新建接口,ICatService。此包為業務邏輯層的包,其中ICatService接口中的代碼如下:
//添加int?addCat(Cat cat);//修改int?updateCat(Cat cat);//刪除int?delCat(Cat cat);//根據編號查詢Cat findCatById(int?cid);//查詢全部List<Cat> findCatAll();//根據名稱模糊查詢List<Cat> findCatByName(String name);//根據姓名和密碼查詢Cat findCatByNameAndPass(String name,String pass);十、新建包cn.bdqn.petSys.Service.impl,(該包中的類主要是實現cn.bdqn.petSysService包中的接口),在該包中新建類CatServiceImpl,該類中的代碼如下:
public?class?CatServiceImpl?implements?ICatService?{ICatDao catDao = new?CatDaoImpl();@Overridepublic?int?addCat(Cat cat)?{// TODO Auto-generated method stubreturn?catDao.addCat(cat);}@Overridepublic?int?updateCat(Cat cat)?{// TODO Auto-generated method stubreturn?catDao.updateCat(cat);}@Overridepublic?int?delCat(Cat cat)?{// TODO Auto-generated method stubreturn?catDao.delCat(cat);}@Overridepublic?Cat findCatById(int?cid)?{// TODO Auto-generated method stubreturn?catDao.findCatById(cid);}@Overridepublic?List<Cat> findCatAll()?{// TODO Auto-generated method stubreturn?catDao.findCatAll();}@Overridepublic?List<Cat> findCatByName(String name)?{// TODO Auto-generated method stubreturn?catDao.findCatByName(name);}@Overridepublic?Cat findCatByNameAndPass(String name, String pass)?{// TODO Auto-generated method stubreturn?catDao.findCatByNameAndPass(name, pass);}}十一、新建包cn.bdqn.petSys.test包,該包中放置的是測試類,代碼如下:
public?class?TestCat?{static?ICatService catService = new?CatServiceImpl();static?Scanner sc = new?Scanner(System.in);public?static?void?main(String[] args) {findCatAll();}//添加貓public?static?void?addCat(){System.out.println("請輸入編號:");int?cid = sc.nextInt();System.out.println("請輸入名稱:");String cname = sc.next();System.out.println("請輸入密碼:");String cpass = sc.next();System.out.println("請輸入親密度:");int?clove = sc.nextInt();System.out.println("請輸入性別:");String csex = sc.next();Cat cat = new?Cat();cat.setCid(cid);cat.setCname(cname);cat.setCpass(cpass);cat.setClove(clove);cat.setCsex(csex);int?rel = catService.addCat(cat);if(rel>0){System.out.println("添加成功");}else{System.out.println("添加失敗");}}//查詢全部public?static?void?findCatAll(){List<Cat> clist = catService.findCatAll();System.out.println("編號\t名稱\t密碼\t親密度\t性別\t");for(int?i = 0;i<clist.size();i++){System.out.print(clist.get(i).getCid()+"\t");System.out.print(clist.get(i).getCname()+"\t");System.out.print(clist.get(i).getCpass()+"\t");System.out.print(clist.get(i).getClove()+"\t");System.out.println(clist.get(i).getCsex());}}}往期精彩
在操作復雜字符串時推薦使用正則表達式
2020-09-13
字符串的拼接方法我們選哪種合適?
2020-09-11
在String字符串運算過程中,試著換一下字符串的位置看看
2020-09-10
Java中的集合框架(一)
2020-09-06
開源日志工具log4j
2020-09-05
java中的異常(三)
2020-09-04
點分享
點點贊
點在看
總結
以上是生活随笔為你收集整理的详细整理分层开发步骤!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CDPR 首席执行官 Adam Kici
- 下一篇: 小米米家电动鼻毛修剪器上架:抗菌涂层 +