菜鸟眼中的springMVC

本文详细介绍Spring MVC架构中的分层设计,包括Controller、Service、Repository等各层的作用及其实现方式,并深入探讨了JPA注解在实体映射中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一般做法:
建包:
action层新建java文件    @Controller新建action继承BaseAction
                        @Resource(name=新建的action)
                        @Controller
  1.源码:public class NewAction extends BaseAction{
    @Resource(name="newService")
    private NewService newService;
                          
  2.@RequestMapping(value="/test/add.do")
     public ModelAndView addNew(,,){
      在类中(新建的在bean中)new一个对象
}                         


bean层   新建一个类继承...bean   定义各属性以及get{}set{}
domain层  @Entity(name="实例名")
          @Table(name=,catalog=等可选)
           新建(bean中)类的子类通过注解如@Column等定义表中字段


repository层  详细http://blog.youkuaiyun.com/ming070423/article/details/22082389

         新建类继承JpaRepository,实现数据库的各项操作update,delete.
              JpaRepository支持接口规范方法名查询。
        例:  @Repository("testRepository")
             public interface TestRepository extends JpaRepository<TbTest,Integer> {
             @Query("sql")


service层    根java文件声明接口,声明所有方法如publicinterface TestService
                                              public int delete(String title);
             建impl包的子java文件使用接口的实现,以及使用到的事物
                    如 public int delete(String title)
                       return  testRepository.delete(title);
            接口进行对象的封装


有关对数据层的理解:  在.sql中create table tb_1.....
                     在bean中定义类(类中定义私有属性体现封装性,定义参数getset)
                     在domain中使用注解@Entity@Table 类继承bean中的类,再@ID@Column  
                     @Id  
                 @Column(name = "id", unique = true)
                   public Integer getId() {
               return super.getId();
                  }
                     在repository层中定义接口并继承JpRepository


repository层
@Query("from Params p where p.paramName like %?1% and p.isValid=true")
public List<ParamsBean> findParamsByName(String name);

service层
impl中
声明所有使用到的方法接口等



父类baseaction里常用方法有: sendSuccess(,);return getRedirectView("..//.do",succ );
ModelAndView mv=new ModelAndView("/index");return mv;
EJB3方法注入http://www.doc88.com/p-102817070421.html
   @MappedSuperclass 用在父类上面。当这个类肯定是父类时,加此标注。如果改成@Entity,则继承后,多个类继承,只会生成一个表,而不是多个继承,生成多个表.




  //Constructor
  构造函数:在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源
 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading
  JPA&hibernate注解  来自http://wenku.baidu.com/view/118fd4a4b0717fd5360cdc72.html
  @Entity实例化实体   @Entity(name="EntityName")  必须 ,name 为可选,对应数据库中一的个表
 
  @Table 表连接   @Table(name="",catalog="",schema="")   可选 , 通常和 @Entity 配合使用 , 只能标注在实体的 class 定义处 , 表示实体对应的数据库表的信息   name: 可选 , 表示表的名称 . 默认地 , 表名和实体名称一致 , 只有在不一致的情况下才需要指定表名   catalog: 可选 , 表示 Catalog 名称 , 默认为 Catalog("").  schema: 可选 , 表示 Schema 名称 , 默认为 Schema("").
 
  @id  必须   @id 定义了映射到数据库表的主键的属性 , 一个实体只能有一个属性被映射为主键 . 置于 getXxxx() 前

  @GeneratedValue(strategy=GenerationType,generator="")  可选   strategy: 表示主键生成策略 , 有 AUTO,INDENTITY,SEQUENCE 和 TABLE 4 种 , 分别表示让 ORM 框架自动选择 ,   根据数据库的 Identity 字段生成 , 根据数据库表的 Sequence 字段生成 , 以有根据一个额外的表生成主键 , 默认为 AUTO.generator: 表示主键生成器的名称 , 这个属性通常和 ORM 框架相关 , 例如 ,Hibernate 可以指定 uuid 等主键生成方式
示例 :       @Id      
             @GeneratedValues(strategy=StrategyType.SEQUENCE)    
              public int getPk() {        
              return pk;     
              }
 @Basic(fetch=FetchType,optional=true)  可选   @Basic 表示一个简单的属性到数据库表的字段的映射 , 对于没有任何标注的 getXxxx() 方法 , 默认即为 @Basic   fetch: 表示该属性的读取策略 , 有 EAGER 和 LAZY 两种 , 分别表示主支抓取和延迟加载 , 默认为 EAGER.   optional: 表示该属性是否允许为 null, 默认为 true
 示例 :       @Basic(optional=false)       
               public String getAddress() {       
                return address;      }

  @Column表字段
  @Column 描述了数据库表中该字段的详细定义 , 这对于根据 JPA 注解生成数据库表结构的工具非常有作用 .   name: 表示数据库表中该字段的名称 , 默认情形属性名称一致  nullable: 表示该字段是否允许为 null, 默认为 true  unique: 表示该字段是否是唯一标识 , 默认为 false
  length: 表示该字段的大小 , 仅对 String 类型的字段有效  insertable: 表示在 ORM 框架执行插入操作时 , 该字段是否应出现 INSETRT 语句中 , 默认为 true   updateable: 表示在 ORM 框架执行更新操作时 , 该字段是否应该出现在 UPDATE 语句中 , 默认为 true. 对于一经创建就不可以更改的字段 , 该属性非常有用 , 如对于 birthday 字段 .   columnDefinition: 表示该字段在数据库中的实际类型 . 通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型 , 但是对于 Date 类型仍无法确定数据库中字段类型究竟是 DATE,TIME 还是 TIMESTAMP. 此 外 ,String 的默认映射类型为 VARCHAR, 如果要将 String 类型映射到特定数据库的 BLOB 或 TEXT 字段类型 , 该属性非常有用 .  示例 :  @Column(name="BIRTH",nullable="false",columnDefinition="DATE")
            public String getBithday() {     
            return birthday;   
            }







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值