java之Spring學習之前的一個小demo
寫這個小demo呢,是為了在學習Spring之前,練習一下傳統的model2開發模式;
為了簡化流程,這裏省略了利用servlet來獲取前臺數據。
采用直接new出來的對象來交給程序處理,然後執行對數據庫的操作以及顯示(控制臺顯示,哈哈)。
用到了:Hibernate、反射、Junit。
先來一張項目目錄圖,看一下結構:
------------------------------------------------------------
------------------------------------------------------------
1.建表連接數據庫並生成持久化類
生成的User類以及xml文件放置於model包下
1 public class User implements java.io.Serializable { 2 private Integer id; 3 private String name; 4 private Integer age; 5 // Constructors 6 /** default constructor */ 7 public User() { 8 } 9 /** full constructor */ 10 publicUser(String name, Integer age) { 11 this.name = name; 12 this.age = age; 13 } 14 // Property accessors 15 public Integer getId() { 16 return this.id; 17 } 18 public void setId(Integer id) { 19 this.id = id; 20 } 21 public String getName() {22 return this.name; 23 } 24 public void setName(String name) { 25 this.name = name; 26 } 27 public Integer getAge() { 28 return this.age; 29 } 30 public void setAge(Integer age) { 31 this.age = age; 32 } 33 @Override 34 public String toString() { 35 return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; 36 } 37 }
可以看出是一個標準的javabean,id采用自增(increment)。
另外HibernateSessionFactory文件(工廠文件)放在hibernate包下。
2.創建一個UserDao接口
該接口位於Dao包下,為後面的方法反射做準備。
1 public interface UserDao { 2 public void newuser(); 3 }
寥寥三行代碼,但是意義重大!!!後面就知道了。
3.創建類實現UserDao接口並自定義用戶方法
1 public class Usertodo implements UserDao { 2 //newuser()方法來源於實現接口的方法 3 public void newuser(){}; 4 //自定義的用戶添加方法,傳入一個用戶對象作為參數 5 public void add(User user) { 6 //利用Hibernate的工廠類獲得Session對象和事務對象Transaction 7 Session session = HibernateSessionFactory.getSession(); 8 Transaction transaction = session.beginTransaction(); 9 //數據庫添加用戶操作 10 session.save(user); 11 //提交事務 12 transaction.commit(); 13 //關閉session對象 14 session.close(); 15 } 16 //自定義的用戶查詢方法,傳入一個用戶對象id作為參數 17 public void queryuser(int id){ 18 //利用Hibernate的工廠類獲得Session對象和事務對象Transaction 19 Session session = HibernateSessionFactory.getSession(); 20 //Transaction transaction = session.beginTransaction(); 21 //根據id查詢相應的用戶 22 User user =(User)session.get(User.class, id); 23 //關閉session對象 24 session.close(); 25 //向控制臺打印此次獲得的對象 26 System.out.println("以下是此次獲得ID為"+id+"的用戶信息"+user.toString()); 27 } 28 }
Dao層實現對數據庫的增刪改查操作,方法定義好之後由服務層進行調用,這個demo裏Dao層只寫了添加用戶、查詢
用戶的方法。將會在後面服務層調用(Dao層方法除非需求改變,一般不會發生改變)
該類位於Daoimp包。
4.服務層模擬用戶的操作
用戶對頁面點擊的時候調用服務層方法
1 public class Userservice { 2 static Usertodo a; 3 4 // 利用方法反射獲取Usertodo類的實例化對象a 5 private static void init() { 6 try { 7 UserDao user = new Usertodo(); 8 Class c = user.getClass(); 9 a = (Usertodo) c.newInstance(); 10 } catch (Exception e) { 11 e.printStackTrace(); 12 } 13 }; 14 15 // 由此實例化對象來調用Dao層的方法 16 // 添加用戶 17 public static void useradd(User newuser) { 18 init(); 19 a.add(newuser); 20 } 21 22 // 查詢用戶 23 public static void userquery(int id) { 24 init(); 25 a.queryuser(id); 26 } 27 }
初始化函數init()獲取Dao層對象,即擁有對數據庫操作權利的這個對象,然後調用這個對象的方法實現用戶間接對
數據庫的操作,該類位於service包下。
5.單元測試
1 public class Test1 { 2 @Test 3 public void add() { 4 User newuser = new User("桔子桑", 26); 5 Userservice.useradd(newuser); 6 } 7 8 @Test 9 public void query() { 10 Userservice.userquery(5); 11 } 12 }
這個測試類的兩個方法,add()和query()方法:
add()方法:實現傳入一個對象,然後將對象添加到數據庫;
query()方法:實現根據id號查詢用戶並打印用戶信息;
add()方法執行了9次,向表中添加了9個用戶:
--------------------------------------------------------------
---------------------------------------------------------------
接下來執行query()方法,查詢id為5的用戶信息:
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
可以看出控制臺也成功輸出了ID為5的用戶信息。
Bingo~~~~~
java之Spring學習之前的一個小demo