1. 程式人生 > >java之Spring學習之前的一個小demo

java之Spring學習之前的一個小demo

服務 err const 對象 color void del () 添加

寫這個小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     public
User(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