精华内容
下载资源
问答
  • 下面小编就为大家分享一篇基于MVC5中的Model层开发数据注解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数据显示(在View层显示相应的数据) ...

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用:

    1. 数据映射(把Model层的类用EntityFramework映射成对应的表)
    2. 数据验证(在服务器端和客户端验证数据的有效性)
    3. 数据显示(在View层显示相应的数据)

    数据注解相关的命名空间如下:

      DataAnnotations名称空间中包含主要的数据注解,Schema名称空间中包含一些数据映射的数据注解,Mvc名称空间中包含字符、数组、数值长度和属性比较的数据注解,Security名称空间中包含MemberShipPassword注解特性。

     

    数据映射和验证相关的数据注解:

    [Required] 必填字段
    [MaxLength] 指定属性中允许的数组或字符串数据的最大长度
    [MinLength]指定属性中允许的数组或字符串数据的最小长度
    [StringLength]                      指定最小和最大字符长度
    [Range]  指定数值范围

     

     

     

     

     

    数据验证相关的数据注解

    [Remote]使用 jQuery 验证插件远程验证程序的特性
    [FileExtension]验证文件扩展名
    [Compare]比较两个属性的值
    [RegularExpression]使用正则表达式验证
    [CustomValidation] 自定义验证方法
    [DataType]指定要与数据字段关联的附加类型的名称
    [EmailAddress]电子邮件地址(相当于[DataType(DataType.Email)])
    [Phone]电话(同上)
    [CreditCard]信用卡号码(同上)
    [Url] 验证URL(同上)
    [MemberShipPassword]        验证密码字段是否满足成员资格提供程序的当前密码要求

     

     

     

     

     

     

     

     

     

     

     

     数据映射相关的数据注解:

    [Key]主键字段
    [Column]数据库列属性映射
    [NotMapped]不要创建对应的字段
    [Table]指定类将映射到的数据库表
    [ForeignKey]表示关系中用作外键的属性
    [DatabaseGenerated]           指定数据库生成属性值的方式(EF不追踪属性的变化)

     

     

     

     

     

     

     

    数据显示相关的数据注解:

    [DisplayName]指定本地化的字符串(习惯用语类)
    [Display]指定本地化的字符串(习惯用语属性)
    [DisplayFormat]设置数据字段的格式
    [ReadOnly] 指定该特性所绑定到的属性是只读属性还是读/写属性
    [EditAble]指示数据字段是否可编辑
    [HiddenInput]指示是否应将属性值或字段值呈现为隐藏的 input 元素
    [ScaffoldColumn]                   指定类或数据列是否使用基架
    [UIHint] 指定动态数据用来显示数据字段的模板

     

     

     

     

     

     

     

     

    其他

    [DisplayColumn]                   将所引用的表中显示的列指定为外键列
    [Description]

    可视化设计器在引用组件成员时可以显示指定的说明

    (命名空间:System.ComponentModel.DescriptionAttribute

     

     

     

     

     

    1、数据验证相关的数据注解继承ValidationAttribute类,都有一个ErrorMessage属性用来显示错误提示。

    如:[Required(ErrorMessage="此项不能为空")]。

    2、数据映射中Int类型和DateTime类型在数据库中默认不允许为NULL,如果需要设置为NULL,使用可空类型即可(使用Int?或者DateTime?)。

    转载于:https://www.cnblogs.com/cjm123/p/8032105.html

    展开全文
  • LinqToSql类生成工具 自动生成Model层 和DAL层的代码,并且带有注释
  • Spring boot 三层框架dao层、service层、controller层+实体model层model层dao层service层controller层 首先创建一个springboot项目。 model层 model层也叫pojo层或者entity层,个人比较喜欢pojo层。 一般数据库的...

    Spring boot 三层框架dao层、service层、controller层+实体model层

    首先创建一个springboot项目。


    model层

    model层也叫pojo层或者entity层,个人比较喜欢pojo层。
    一般数据库的一张表对应一个pojo层,并且表中所有字段都在pojo层都一一对应。

    eg:一张Goods表
    在这里插入图片描述
    然后要先建一个pojo的package,代表它是实体层。
    再在该package下创建一个Goods的java文件,创建的对象都是和表里字段一一对应,如下所示:

    package pojo;
    
    import lombok.*;
    
    @Data
    public class Goods {
        /*
        商品编号
         */
        private String GNo;
    
        /*
        商品名称
         */
        private String GName;
    
        /*
        商品价格
         */
        private Double GPrice;
    }
    

    这里的lombok的作用时为了简化代码,因为对于private这样的对象,想要调用它的时候,需要get和set两个方法,而有了lombok之后就可以不用写,直接用即可。
    不过要添加依赖和注解@Data,lombok还有很多其他用法,之后可能会出一篇博客。

    通过maven下载依赖:

    <dependency>
    	<groupId>org.projectlombok</groupId>
    	<artifactId>lombok</artifactId>
    	<optional>true</optional>
    </dependency>
    

    这样数据库里的字段,我们就可以用对象来表示。


    但是model不属于springboot的三层框架。
    主要说明是dao层、service层和controller层。
    这些已经是属于后端了。

    对于一个项目,安全性是非常有必要的,所以springboot很好地体现了这一点。

    比如:
    想要访问数据库并且操作,只能通过dao层向数据库发送sql语句,将这些结果通过接口传给service层。
    想要处理数据,要先向dao层请求数据,对dao层传过来的数据进行加工处理,将这些处理好的数据通过接口传给controller层。
    客户想要查询或修改数据时,要先向service层请求数据,收集service层传过来的数据,将这些数据通过接口显示给客户,一般通过html等方法给客户。
    下面会一一说明。


    dao层

    dao层也叫mapper层,数据持久层,个人比较喜欢mapper层。
    对数据库进行持久化操作,他的方法是针对数据库操作的,基本用到的就是增删改查。它只是个接口,只有方法名字,具体实现在mapper.xml中。

    既然mapper层是直接与数据库相挂钩的,所以要先连接数据库。
    可以在sqlMapConfig.xml文件或者application.properties文件里添加数据库属性等,如下所示:

    • sqlMapConfig.xml添加属性:
    <!-- 加载属性文件 -->
    <properties resource="/config/db.properties"></properties>
    
    <!-- 和spring整合后environment配置将废除 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池,由mybatis管理 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    

    在 SqlMapConfig.xml就不需要对数据库连接参数硬编码。

    • application.properties添加属性:

    在这里插入图片描述
    方便对参数进行统一管理,其他 xml 可以应用该配置文件。

    然后检查是否连上数据库,请看下图:
    在这里插入图片描述
    然后自己配置数据库。

    数据库连接上了,到了两个文件的编写,我采用mybatis框架。

    如何编写mapper.xml,对数据库增删改查?

    在学习MyBatis框架的过程中,发现在idea里面没法创建Mapper.xml映射文件,创建出的xml文件没有Mapper.xml文件的基本格式,下面说明如何在idea中创建Mapper.xml映射文件模板。

    F i l e → S e t t i n g s … → E d i t o r → F i l e a n d C o d e T e m p l a t e s \red{File → Settings… → Editor → File and Code Templates} FileSettingsEditorFileandCodeTemplates
    在这里插入图片描述
    在这里插入图片描述
    点 击 " + " 号 , 并 输 入 文 件 的 名 称 和 文 件 的 类 型 , 编 辑 好 模 板 后 点 击 A p p l y 即 可 创 建 成 功 \red{点击"+"号,并输入文件的名称和文件的类型,编辑好模板后点击Apply即可创建成功} "+"Apply
    在这里插入图片描述
    在这里插入图片描述
    mapper.xml文件模版

    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="">
        
    </mapper>
    
    
    

    创建GoodsMapper.xml文件。
    在这里插入图片描述

    编写内容:

    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="mapper.GoodsMapper">
        <!--增加商品-->
        <insert id="insertGoods" parameterType="mapper.GoodsMapper">
            insert into Goods(GNo, GName, GPrice) values(#{GNo},#{GName},#{GPrice})
        </insert>
    
        <!--删除商品-->
        <delete id="deleteGoods" parameterType="java.String">
            delete from Goods where id=#{id}
        </delete>
    
        <!--修改商品-->
        <update id="uodateGoods" parameterType="mapper.GoodsMapper">
            update Goods set GNo=#{GNo}, GName=#{GName}, GPrice=#{GPrice} where id=#{id}
        </update>
    
        <!--查找商品-->
        <select id="findGoods" parameterType="java.String" resultType="mapper.GoodsMapper">
            select *from Goods where id=#{id}
        </select>
    </mapper>
    

    创建GoodsMapper的接口。

    package mapper;
    
    import pojo.Goods;
    
    public interface GoodsMapper {
        /**
         *增加商品
         * @param goods
         * @throw Exception
         */
        void insertGoods(Goods goods) throws Exception;
        /**
         * 删除商品
         * @param GNo
         * @throw Exception
         */
        void deleteGoods(String GNo) throws Exception;
        /**
         * 修改商品
         * @param goods
         * @throw Exception
         */
        void updateGoods(Goods goods) throws Exception;
        /**
         * 根据GNo查找
         * @return
         * @throw Exception
         */
        Goods findByGNo(String GNo) throws Exception;
    }
    

    不需要编写接口对实现类了,只要这两个文件的映射关系对应好就ok,这不在本文的讲述范围内。


    service层

    service层叫业务逻辑层,存放业务逻辑处理,不直接对数据库进行操作,有接口和接口实现类,提供controller层调用的方法。

    创建两个文件,一个存放接口类,一个存放接口实现类。

    GoodsService接口类:

    package service.Goods;
    
    import pojo.Goods;
    
    public interface GoodsService {
        void insertGoods(Goods goods) throws Exception;
        void deleteGoods(String GNo) throws Exception;
        void updateGood(Goods goods) throws Exception;
        void findByGNo(String GNo) throws Exception;
    }
    

    GoodsServiceImpl接口实现类:

    package service.Goods;
    
    import mapper.GoodsMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import pojo.Goods;
    
    @Service
    public class GoodsServiceImpl implements GoodsService {
        @Autowired
        private GoodsMapper goodsMapper;
    
        @Override
        public void insertGoods(Goods goods) throws Exception {
            goodsMapper.insertGoods(goods);
        }
    
        @Override
        public void deleteGoods(String GNo) throws Exception {
            goodsMapper.deleteGoods(GNo);
        }
    
        @Override
        public void updateGood(Goods goods) throws Exception {
            goodsMapper.updateGoods(goods);
        }
    
        @Override
        public void findByGNo(String GNo) throws Exception {
            goodsMapper.findByGNo(GNo);
        }
    }
    
    

    就这样,service层与mapper层建立起了联系,service层可以调用mapper层的方法。


    controller层

    controller层叫控制器层,负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。

    同样,也需要两个文件,接口类和接口实现类。

    GoodsControllerI接口类:

    package Controller.Goods;
    
    import pojo.Goods;
    
    public interface GoodsController {
        void insertGoods(Goods goods) throws Exception;
        void deleteGoods(String GNo) throws Exception;
        void updateGood(Goods goods) throws Exception;
        void findByGNo(String GNo) throws Exception;
    }
    

    GoodsControllerImpl接口实现类:

    package Controller.Goods;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import pojo.Goods;
    import service.Goods.GoodsService;
    
    @Controller
    public class GoodsControllerImpl {
        @Autowired
        private GoodsService goodsService;
    
        @RequestMapping(value = "/index")
        public String insertGoods(Goods goods) throws Exception {
            goodsService.insertGoods(goods);
            return "/index";
        }
        
        @RequestMapping(value = "/index")
        public String deleteGoods(String GNo) throws Exception {
            goodsService.deleteGoods(GNo);
            return "/index";
        }
        
        @RequestMapping(value = "/index")
        public String updateGoods(Goods goods) throws Exception {
            goodsService.updateGood(goods);
            return "/index";
        }
        
        @RequestMapping(value = "/index")
        public String findByGNo(String GNo) throws Exception {
            Goods goods = new Goods();
            goods = goodsService.findByGNo(GNo);
            return "/index";
        }
    }
    

    这样,客户可以通过请求的方式,将数据从前端传给Controller层,然后一层一层传下去,在一层一层地传上来,实现了后端开发。

    是不是发现和前端没什么关系?
    是的,springboot还有一个优点就是实现了前后端分离,从而工作人员分配任务的时候更加具有条理性。而三层的架构可以让程序员很快地知道bug出现在哪里,哪一层,哪一文件,很快的修改bug。

    呜呼,总而言之,springboot作为web开发的一个主流框架,正式因为这些优秀点让它脱颖而出。

    这一篇写得好累。

    展开全文
  • 已知model层注解为 @Entity @Table(uniqueConstraints=@UniqueConstraint(columnNames={"属性1","属性2"...})) public class 类名{ //此处省略 } 若要获取"属性1",“属性2”…的...

    已知model层的注解为

    @Entity
    @Table(uniqueConstraints=@UniqueConstraint(columnNames={"属性1","属性2"...}))
    public class 类名{
    //此处省略
    }
    

    若要获取"属性1",“属性2”…的列表,可通过下面的方法实现

    String[] constraints=(String[])类名.getAnnotation(Table.class).uniqueConstraints()[0].columnNames();
    
    展开全文
  • model 数据注解

    2018-03-31 22:33:00
    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数据显示(在View层显示相应的数据) 数据...

    https://www.cnblogs.com/leoxuan/articles/6555396.html
    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用:

    数据映射(把Model层的类用EntityFramework映射成对应的表)
    数据验证(在服务器端和客户端验证数据的有效性)
    数据显示(在View层显示相应的数据)
    数据注解相关的命名空间如下:

    System.ComponentModel.DataAnnotations
    System.ComponentModel.DataAnnotations.Schema
    System.Web.Mvc
    System.Web.Security
    DataAnnotations名称空间中包含主要的数据注解,Schema名称空间中包含一些数据映射的数据注解,Mvc名称空间中包含字符、数组、数值长度和属性比较的数据注解,Security名称空间中包含MemberShipPassword注解特性。

    数据映射和验证相关的数据注解:

    [Required] 必填字段
    [MaxLength] 指定属性中允许的数组或字符串数据的最大长度
    [MinLength] 指定属性中允许的数组或字符串数据的最小长度
    [StringLength] 指定最小和最大字符长度
    [Range] 指定数值范围

    数据验证相关的数据注解:

    [Remote] 使用 jQuery 验证插件远程验证程序的特性
    [FileExtension] 验证文件扩展名
    [Compare] 比较两个属性的值
    [RegularExpression] 使用正则表达式验证
    [CustomValidation] 自定义验证方法
    [DataType] 指定要与数据字段关联的附加类型的名称
    [EmailAddress] 电子邮件地址(相当于[DataType(DataType.Email)])
    [Phone] 电话(同上)
    [CreditCard] 信用卡号码(同上)
    [Url] 验证URL(同上)
    [MemberShipPassword] 验证密码字段是否满足成员资格提供程序的当前密码要求

    数据映射相关的数据注解:

    [Key] 主键字段
    [Column] 数据库列属性映射
    [NotMapped] 不要创建对应的字段
    [Table] 指定类将映射到的数据库表
    [ForeignKey] 表示关系中用作外键的属性
    [DatabaseGenerated] 指定数据库生成属性值的方式(EF不追踪属性的变化)

    数据显示相关的数据注解:

    [DisplayName] 指定本地化的字符串(习惯用语类)
    [Display] 指定本地化的字符串(习惯用语属性)
    [DisplayFormat] 设置数据字段的格式
    [ReadOnly] 指定该特性所绑定到的属性是只读属性还是读/写属性
    [EditAble] 指示数据字段是否可编辑
    [HiddenInput] 指示是否应将属性值或字段值呈现为隐藏的 input 元素
    [ScaffoldColumn] 指定类或数据列是否使用基架
    [UIHint] 指定动态数据用来显示数据字段的模板

    其他

    [DisplayColumn] 将所引用的表中显示的列指定为外键列
    [Description]
    可视化设计器在引用组件成员时可以显示指定的说明

    (命名空间:System.ComponentModel.DescriptionAttribute)

    1、数据验证相关的数据注解继承ValidationAttribute类,都有一个ErrorMessage属性用来显示错误提示。

    如:[Required(ErrorMessage="此项不能为空")]。

    2、数据映射中Int类型和DateTime类型在数据库中默认不允许为NULL,如果需要设置为NULL,使用可空类型即可(使用Int?或者DateTime?)。

    初学ASP.NET MVC顺便总结了一下数据注解(并不包含所有的内置数据注解),每个数据注解的具体使用请查询MSDN,不当的地方望指正。

    转载于:https://www.cnblogs.com/chenmfly/p/8684558.html

    展开全文
  • 【SpringBoot】model层、dao层、service层、controller层 学习详解1、model层2、dao层3、service层4、controller层 1、model层 model层,又称:数据访问层,主要是做数据持久层的工作 一张表对应一个实体类 例:一...
  • 三层架构-Model层

    2020-06-20 11:46:06
    Model层 创建Model层使用类库 在Model层创建类对应数据库中的每一张表(ps:尽量使用表名和类名一致) 创建类后检查是否具有public属性 没有要手动加上 不然无法调用 使用prop关键字 对字段自动属性设置 每一个字段...
  • Model层设计

    2019-12-04 11:40:22
    关于Model层的一次设计 背景: 最近在做一个新项目,服务端一个人承担;也是第一次,一个人承担服务端并且从0开始做的项目。整个项目因为处于demo阶段,所以是个单体项目。项目技术栈:spring boot 全家桶 + mybatis...
  • 理解controller层,service层,dao层,model层:https://www.cnblogs.com/tooyi/p/13340374.html 1、导入包——pom.xml内 <dependencies> <dependency> <groupId>org.springframework.boot</...
  • 1、model层=entity层 2、service层 3、mapper层=dao层 4、controller层 1、model层=entity层 存放我们的实体类,与数据库中的属性值基本保持一致。 2、service层 存放业务逻辑处理,也是一些关于数据库处理的...
  • model层=entity层。存放我们的实体类,与数据库中的属性值基本保持一致。service层。存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中...
  • MVC即model view controller。 MyBatis 是一款优秀的持久框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来...
  • 但是,在model层的字段属性上,同样加上这样子的summary注释,使用model对象调用该字段,却看不到该说明 /// <summary> /// 产品的属性,如颜色、尺寸 /// </summary> public string ...
  • tp5自动生成控制器和验证器model层,只需要修改database文件,选择数据表就可以生成控制器层model层和验证器层的代码,简单快速 ,节约时间
  • 使用T4模板根据数据库生成model层

    千次阅读 2017-10-06 12:06:37
    使用T4模板根据数据库生成model层使用T4模板根据数据库生成model层 前言 T4模板介绍 添加生成文件Managerttinclude T4内代码 总结前言 学习EF时接触到T4模板,感觉到了它的强大。既然EF的edmx文件下的tt文件可以生成...
  • 对于model层,如果返回的结果集不确定,有可能是一个对象,也有可能是一个Boolean这种类型,那么可以将model写成R的形式 public class ResultDTO implements Serializable{ /** * */ private static final ...
  • 使用Mantle处理Model层对象

    千次阅读 2015-05-18 22:25:40
    我们都会在开发中遇到如何对Model层对象进行建模的问题,比如,将服务器请求下来的json转换为我们本地的Object。这部分,有许多令人讨厌的代码要写,比如类型的转换、json的解析等等,没有什么技术含量,但是又必须...
  • 从GenerateConf.xml读取一些必要数据,如路径、实体类名、实体类字段等,在Generate.java这个总控制中心解析后,调用GenerateDao、GenerateService和GenerateModel类的中方法生成所需代码。 在PathUtil中,有一些...
  • springMVC model注解注入

    千次阅读 2014-12-18 20:59:37
    2014 年 11 月 20 日下午: 1.类与关系表的映射: ... net.tfedu.discuss.discuss.model....的类 @ Controller @RequestMapping ( "/action*" )声明是Controller 类型的类
  • MVC的Model层验证(非空,手机号验证)

    千次阅读 2019-03-14 16:30:12
    今天先总结下在MVC的Model层中实现注册的验证。若有问题,欢迎大家指出。 第一步:添加引用 添加的引用为: System.ComponentModel.DataAnnotations; 一般输入dataa就出来了 在添加完引用之后呢,就可以往Model...
  • ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数据显示(在View层显示相应的数据) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,792
精华内容 33,916
关键字:

model层注解