使用Spring+Angular+HSqlDB的web项目开发(1)

    • 创建一个以Gradle构建的spring project,导入工程并进行配置

       http://start.spring.io/


    • Spring MVC——Controller

    Controller的作用:监听输入请求;将数据发送到Model进行进一步处理;

    从Model获取处理后的数据,发送给View显示。


    • REST

    REST是设计分布式系统的体系结构风格。 它不是标准,而是一组约束。

    资源显示了URI的内容。

    传递JSON或XML来表示数据对象和属性。

    使用HTTP方法对资源进行操作(POST, PUT, GET, DELETE)。


    • SpringMVC注解

    使用@Controller标记某类,表明它是Controller对象。

    使用@RequestMapping来注释控制器类,在这种情况下,所有方法都将映射为相对于类级别的请求,表示该控制器处理的所有请求都被映射到value属性所指示的路径下。

    使用@ResponseStatus可以实现自定义异常,同时在页面上进行显示。

    使用@ResponseBody 令该方法的返回结果直接写入 HTTP response body 中。


    @Controller
       public class MyFirstController {
    	@RequestMapping(value = "/cars", method = RequestMethod.GET) 			                                           @ResponseStatus(HttpStatus.OK)
    	@ResponseBody
    	public List<Car> listOfCars(){	
    		List<Car> availableList =  new ArrayList<Car>();
    		for(int i=0;i<s.getAllCars().size();i++){
    				if(!s.getAllCars().get(i).isRented())
    				{
    					availableList.add(s.getAllCars().get(i));
    				}
    			}
    			return availableList;
    	}
    }


    • JPA实体类注解

    @Entity作为实体类标识

    @Id 标识的实体类的属性映射对应表中的主键


    @Entity
    public class Car {
    	int id;
    	String plateNumber;
    	String model;
    	@Id
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getPlateNumber() {
    		return plateNumber;
    	}
    	public void setPlateNumber(String plateNumber) {
    		this.plateNumber = plateNumber;
    	}
    	public String getModel() {
    		return model;
    	}
    	public void setModel(String model) {
    		this.model = model;
    	}
    }

    @OneToOne、@ManyToOne、@OneToMany、@ManyToMany分别代表一对一、多对一、一对多、多对多的关联


    一对一双向关联

    public class Person{
    	private Car car;
    	@OneToOne(mappedBy = “driver")
    	public Car getCar(){ 
    		return car;
    	}
    	public void setCar( Car car ){ 
    		this.car = car;
    	}
     }
    public class Car{ 
    	private Person driver;
    	@OneToOne
    	public Person getDriver(){
    		 return driver;
    	}
    	public void setDriver ( Person driver){ 
    		this.driver = driver;
    	} 
    }


    一对多的双向关联

    @Entity
    public class Customer {
    	private Collection<OrderService> order;
    	@OneToMany(mappedBy="customer")
    	public Collection<OrderService> getOrder() {
    		return order;
    	}
    	public void setOrder(Collection<OrderService> order) {
    		this.order = order;
    	}
    	public void addOrder( OrderService order1 ){
    		this.getOrder().add(order1);
    	  	order1.customer = this;
    	 }
    }

    @Entity
    public class OrderService {
    	@ManyToOne
    	public Customer getCustomer() {
    		return customer;
    	}
    	public void setCustomer(Customer customer) {
    		this.customer = customer;
    	}
    }
    

    • 使用JPA进行HSQLDB连接

    配置Persistence.xml,作用是映射表和类,里面也可以配置数据库连接信息

    下载HSQLDB

    http://hsqldb.org/

    终端打开HSQLDB下的lib文件夹,输入

    java -cp hsqldb.jar org.hsqldb.Server

    另开一个终端,打开HSQLDB下的lib文件夹,输入

    java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

    弹出窗口选择HSQL Database Engine Server类型



    • EntityManager

    EntityManager由EntityManagerFactory创建,EntityManagerFactory包含有当前O-R映射的元数据信息,每个EntityManagerFactory,可称为一个持久化单元(PersistenceUnit),每个持久化单元可认为是一个数据源的映射。

    PersistenceContext,称为持久化上下文,它一般包含有当前事务范围内的、被管理的实体对象(Entity)的数据。每个EntityManager都会跟一个PersistenceContext相关联。

    EntityManager可以通过@PersistenceContex注入或EntityManagerFactory创建获得


     @PersistenceContext
     EntityManager em;
    EntityManagerFactory emf; 
    EntityManager em = emf.createEntityManager();
    • EntityManager的接口方法

    添加

    @PersistenceContext
    EntityManager em;
    ...
    Personne personne = new Personne();
     em.persist( personne );

    删除

    @PersistenceContext 
    EntityManager em;
    long id = ...
    Person person = em.find(Person.class, id );
    em.remove( person );

    查找

    @PersistenceContext EntityManager em;
    long id = ...
    Person person = em.find(Person.class, id );
    

    • JPQL数据查询
    @Entity
    @NamedQuery(name = "findAllPersons", query = "SELECT p FROM Person p")                                                     public class Person{
    ...
    }
    @PersistenceContext
    EntityManager em;
    ...
    List persons = em.createNamedQuery("findAllPersons").getResultList(); for (Iterator it = persons.iterator(); it.hasNext();){
    Person person = (Person) it.next(); ...
    }






    http://www.baeldung.com/spring-controllers

    https://spring.io/understanding/REST

    http://blog.csdn.net/lamb7758/article/details/54135572

    http://blog.sina.com.cn/s/blog_49c16fee0102uzgo.html

    http://blog.csdn.net/lijia791541916/article/details/50377829



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值