码迷,mamicode.com
首页 > 编程语言 > 详细

java之Spring学习之前的一个小demo

时间:2017-11-15 22:04:26      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:开发模式   ack   ice   this   str   out   default   XML   cti   

写这个小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

标签:开发模式   ack   ice   this   str   out   default   XML   cti   

原文地址:http://www.cnblogs.com/eco-just/p/7840361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!