精华内容
下载资源
问答
  • 一张表里查询多个字段在前一篇教程里面,我们加了个db2内核。如果用户在系统里面搜索框内输入一段文字,这段文字即可能是书名,也有可能是书ISBN号,那么我们应该怎么做呢?找到 solr目录/example/example-DIH/...

    一张表里查询多个字段

    在 前一篇教程里面,我们加了个db2内核。如果用户在系统里面的搜索框内输入一段文字,这段文字即可能是书名,也有可能是书的ISBN号,那么我们应该怎么做呢?

    找到 solr目录/example/example-DIH/solr/db2/conf/ 文件夹。打开 db-data-config.xml 文件。找到entity标签,更改query属性里面的SQL语句。利用MySQL的concat函数拼接一下两个字段的内容,并为这个新的返回列分配一个新的field。修改后的代码如下:

    driver="com.mysql.jdbc.Driver"

    url="jdbc:mysql://127.0.0.1:3306/db1"

    user="test_user"

    encoding="UTF-8"

    password="123456"/>

    query="select c_id,c_name,c_isbn,concat(c_name,' ',c_isbn) zcq from t_book">

    zcq就是我们新加的两字段一块查询的属性。

    同时,我们要修改 managed-schema 文件。找到我们在 前一篇教程 里面加入的field标签,在其中再加入一个新的zcq标签。加完后的代码如下,仅仅显示关键代码:

    重启solr并导入数据,就可以利用 zcq 进行检索了。

    多张并列关系的表,导入并查找数据

    准备测试用的数据。下面是建立表结构的DDL:CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 */;use db3;CREATE TABLE `db3`.`tb1` (  `c_id` INT NOT NULL AUTO_INCREMENT,  `c_name` VARCHAR(45) NULL,  `c_num` INT NULL,  PRIMARY KEY (`c_id`));CREATE TABLE `tb2` (  `c_id` int(11) NOT NULL AUTO_INCREMENT,  `c_title` varchar(45) DEFAULT NULL,  `c_balance` decimal(9,2) DEFAULT NULL,  PRIMARY KEY (`c_id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

    表tb1和表tb2之间是并列的,没有依赖关系,也没有一对一,一对多,多对多的关系。只是单纯的业务需求,用户点击搜索后既要搜索表tb1,也要搜索tb2。这种场景比较常见,比如说即要搜索相关的博客,又要搜索相关的帖子。把我们原来的db2文件夹复制粘贴并重新命名为db3。并且做以下修改。

    db-data-config.xml

    driver="com.mysql.jdbc.Driver"

    url="jdbc:mysql://127.0.0.1:3306/db1"

    user="root"

    encoding="UTF-8"

    password="123456"/>

    query="SELECT c_id,c_name,c_num,concat('tb1_',c_id) tb1_id, concat(c_name,' ', c_num) zcq FROM db3.tb1">

    query="SELECT c_id,c_title,c_balance,concat('tb2_',c_id) tb2_id, concat(c_title,' ',c_balance) zcq FROM db3.tb2">

    managed-schema 前后代码省略。

    solrconfig.xml mysql驱动的jar包路径也要改一下,前后代码省略:

    展开全文
  • 不好意思我们这一次需要先上字段内容然后一个一个讲解,不能像前面那样像设计者一样一个一个推出来了,主要原因还是字段表里包含了属性表。 access_flags 还记得我们在上一篇里讲,在类继承关系之后应该...

    上段我们说到一个类的基本构成,今天我们来讲一下类的内部结构。类的内部一般情况下由类的成员变量(类字段),方法和内部类等构成。

    1、字段表

    不好意思我们这一次需要先上字段表的内容然后一个一个讲解,不能像前面那样像设计者一样一个一个的推出来了,主要原因还是字段表里包含了属性表。


    access_flags

    还记得我们在上一篇里讲的,在类的继承关系之后应该就是field_info他主要描述接口或者类中声明的变量。field包括类和实例级变量(声明在方法外的变量)。那么我们想一下一个成员变量应该有什么?我们平时这样声明一个变量。如:private int a = 0;所以,首先要有的应该是一个作用域(public private protected),接下来是一个int,这个被叫做字段数据类型(也就是int或者其他类型,还有对象,数组)。当然有时候我们还会申请这样一个变量:public static final int a =0;那么我们应该还有一个用来表示他是否是final的变量,被叫做可变性。还有一个static变量需要描述。当然不能缺少了一个enum类型的变量,有时候我们还会见到一些不常见的修饰符,如volatile、transient。

    volatile关乎到jvm的变量赋值问题,在jvm中,a++这个方法不是每次都要去堆内直接操作内存的,他被编译成了四个部分

    1、把内存里的变量复制到自己的方法栈内

    2、进行完修改,这里有赋值和加两部份

    3、再赋值回去。这样如果有A,B两个线程同时访问变量a,并且同时修改+1,在返回堆中的时候a并不会+2而是+1。

    所以volatile变量声明的变量可以保证每次读取的数据都是最新数据,但是注意,不可以保证原子性。

    除此之外volatile还可以保证指令重排优化,这里我们以后会讲。

    2、transient,在序列化的时候,被transient修饰的变量不参与序列化,默认不被transient修饰。

    综上所述,一个字段表应该包括字段的作用域,static,final,volatile,transient,是否由编译器自动生成的,字段是否enum。如下图所示


    name_index,descriptor_index

    前面我们已经说过了,这个位置应该是一个field_info的表,既然是一个表就不可能仅仅只有上面一个最多u2类型的字段构成。所以除此之外我们还需要字段的简单名称和描述符。

    1、简单名称就是如int a;a就是简单名称

    2、描述符:描述符主要用来描述字段的数据类型、方法的参数列表和返回值。这一块不在JVM范围内,后面会在杂项中补充。

    attributes

    最后也就是一个需要细细讲解的部分,属性,在Class文件,字段表,放发表中都可以携带自己的属性表集合。

    一个属性应该是下列这样的结构:


    attribute_name_index 代表了一个常量池关于属性名称的索引。

    而info代表了每一个属性的内容,我们并不强求info的长度,我们只需要一个u4类型的length来表示这个属性到底有多长就可以了。

    而一个字段表内可以声明如下的属性:


    关于每一个属性表的具体结构,我们会到放到下一章,因为方法表中也有属性,综合在一起讲一些比较常见的属性。


    展开全文
  •  将数据库表里某些Number类型的字段设置初始值为0.0,如果前台表单没有填充这些字段,待执行添加操作后,这些Number类的字段的值为默认值0.0 实际效果;  执行添加操作后,Number类型的字段的值为空,并非0.0 ...

    问题背景:

      本项目属于SSH项目,持久层关系数据库框架是Hibernate。前台通过序列化表单,将全部参数和参数值传到后台。

    预期效果:

      将数据库表里某些Number类型的字段设置初始值为0.0,如果前台表单没有填充这些字段,待执行添加操作后,这些Number类的字段的值为默认值0.0

    实际效果;

      执行添加操作后,Number类型的字段的值为空,并非0.0

    解决问题:

      数据库默认属性无效的问题

    解决方式:

      在映射文件*.hbm.xml的<class name=.....dynamic-insert="true">

    解决原理:

      dynamic-insert="true,动态生成SQL语句才执行,如果属性值为空则动态的sql语句中将不再出现空值字段,保证sql的执行效率。

    扩展:

      dynamic-update="true",也是动态生成sql语句,只有你修改的属性,才会出现在sql语句中。

    适应范围:

      数据库表字段很多的情况使用有助于提交sql语句运行效率。

     

    展开全文
  • // 删除部门(一方) 先将关联id字段的其他表里的记录给掷为null,再将其删除 Department d=(Department)s.get(Department.class,18); s.delete(d); s.getTransaction().commit(); s.close(); } ``` ``...
  • 关系型数据库列定义了表中表示实体数据属性。比如:商品表里有name、price、number等。 Flask本身不限定数据库选择,你可以选择SQL或NOSQL任何一种。也可以选择更方便SQLALchemy,类似于...
    • 数据库的设置

    • 在Flask中使用mysql数据库,需要安装一个flask-sqlalchemy的扩展

       pip install flask-sqlalchemy
      
    • 要连接mysql数据库,仍需要安装flask-mysqldb

       pip install flask-mysqldb
      
    • Flask的数据库设置:

       app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test3'</p>
      
    • 常用的SQLAlchemy字段类型

       类型名			python中类型				说明
       Integer		int						普通整数,一般是32位
       SmallInteger	int						取值范围小的整数,一般是16位
       BigInteger		intlong   			不限制精度的整数
       Float			float					浮点数
       Numeric		decimal.Decimal			普通整数,一般是32位
       String			str						变长字符串
       Text			str						变长字符串,对较长或不限长度的字符串做了优化
       Unicode		unicode					变长Unicode字符串
       UnicodeText	unicode					变长Unicode字符串,对较长或不限长度的字符串做了优化
       Boolean		bool					布尔值
       Date			datetime.date			时间
       Time			datetime.datetime		日期和时间
       LargeBinary	str						二进制文件
      
    • 常用的SQLAlchemy列选项

      选项名							说明
      primary_key						如果为True,代表表的主键
      unique							如果为True,代表这列不允许出现重复的值
      index							如果为True,为这列创建索引,提高查询效率
      nullable						如果为True,允许有空值,如果为False,不允许有空值
      default							为这列定义默认值
      
    • 常用的SQLAlchemy关系选项

      选项名							说明
      backref							在关系的另一模型中添加反向引用
      primary join					明确指定两个模型之间使用的联结条件
      uselist							如果为False,不使用列表,而使用标量值
      order_by						指定关系中记录的排序方式
      secondary						指定多对多中记录的排序方式
      secondary join					在SQLAlchemy中无法自行决定时,指定多对多关系中的二级联结条件		
      
    展开全文
  • 但是在建立多对多关系的映射时,我们要借助一张中间表,并在中间表里添加外键,所以两张表建表语句就是正常建表语句,只需要添加每个表本身的字段即可,不需要添加额外属性。 随便举个例子吧,route表(线路)...
  • 其中有三个User的属性字段,分别是借阅人,预约人,处理人的信息(应该都是1对1的关联) 下面是我的User类 class User { private int userId; private String userName; private String userPwd; ...
  • 规则是要求数据表里的所有数据都要和该数据表的键(主键与候选键)有完全依赖关系:每个非键属性必须独立于任意一个候选键的任意一部分属性。如果有哪些数据只和一个键的一部分有关的话,就得把它们独立出来变成另一...
  • 范式(NF):符合某一种级别的关系模式集合,表示一个关系内部各属性之间联系合理化程度 第一范式:对属性的原子性约束,要求属性具有原子性,不可再分解; 第二范式:对记录惟一性约束,要求记录有惟一...
  • JAVA项目中数据库表设计思路

    千次阅读 2019-02-25 10:21:34
    符合某一种级别的关系模式集合,表示一个关系内部各属性之间联系合理化程度 三范式:  第一范式:对属性的原子性约束,要求属性具有原子性,不可再分解;  第二范式:对记录惟一性约束,要求记录有惟一...
  • 数据库三大范式

    2020-08-06 09:03:46
    第一范式(列不可再分): 数据库表中所有字段值都是不可分解原子值,如一张表里有一个字段是高级职称,但是在高校里高级职称包括副教授和教授,这属于可分,所以不符合第一范式. 第二范式(非主属性完全...
  • Technorati Tags: 开源工作流引擎,驰骋.net工作流引擎,...复制列 可以从其他表或者从表里复制过来一些列,让其保持字段名,字段属性一直,这里用到了节点表单设计上。 6.隐藏字段 不要显示给用户,但是数据还是需要
  • 通过配置,让系统以对象整体的方式进行使用,而无需关心数据库的底层映射关系,无需关心字段,而只是关注对象的属性和方法。 hibernate是数据持久化的一种技术. 是ORM对象-关系-映射一种技术.hibernate实现了java的...
  • 一、ORM  ORM:Object ... 类实例对应---------》数据库表里的一行数据  类属性对应---------》数据库里的字段  obj.id obj.name.....类实例对象的属性 二、ORM操作表  1.单表 class UserIn...
  • ORM ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping...类实例对应---------》数据库表里的一行数据 obj.id obj.name.....类实例对象的属性 Djan...
  • 关系: 问题表 1==>n 问题选项表, 需求: 查询问题时候,联查出来问题选项 //问题 实体类 public class Question { private String id;... //问题选项 *** 问题表里不需要有这个属性对应的字段 //…
  • EF(二)Model Fiirst

    2018-04-27 21:22:00
    Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。 一、设计实体数据模型...按F4可以操作字段的属性。 ...
  • 数据表里的所有非主属性都要和该数据表的主键有完全依赖关系;如果有哪些非主属性只和主键的一部份有关的话,它就不符合第二范式;如果一个数据表的主键只有单一一个字段的话,它就一定符合第二范式 第三范式 指...
  • 在上篇博客中,我们把hibernate的基本环境搭建好了。接下来就开始我们核心的内容介绍。我们知道Hibernate是一个ORM框架,即对象...对象的属性变成了表里的字段。步骤一:新建类此步就不赘述了。该类代码如下。package
  • 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元... 数据库表里的1条数据我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库中。...
  • 【Hibernate】(一)入门及原理

    热门讨论 2017-03-19 20:05:19
    简介 Hibernate是一个开源的轻量级的框架。没有Hibernate之前,我们是直接使用sql语句...就是让实体类和数据库表进行一一对应,实体类里面的属性和数据库表里的字段对应,我们不需要直接操作数据库,而通过操作表对应的
  • hibernate 框架  1、hibernate框架应用在javaee三... hibernate使用orm思想对数据库进行crud操作, orm - object relational mapping, 对象关系映射,让实体类和数据库表一一对应,实体类属性表里的字段一一对...
  • 这个时候,我们开始设计数据库,主要是根据需求,来设计数据库需要保存哪些字段,哪些字段需要单独存在一张表里,哪些是可以一关联形式存放。并且以一种清晰表格形式来保存成文档,记录过程。可以设计一个数据...
  • hibernate之继承映射

    2014-07-03 09:45:08
    面向对象中有继承的概念,而关系型数据库却没有表与表之间的继承关系。解决思路有三种:1. 继承关系层次一个表:含义:使用一个表保存同一继承层次中的所有类...适用:需要多态查询,且子类的属性较少。2. 每个具体...
  • Django ORM

    2019-10-03 16:51:08
    ORM是什么?:(在django中,根据代码中的...类名对应------》数据库中的表名类属性对应---------》数据库里的字段类实例对应---------》数据库表里的一行数据obj.id obj.name.....类实例对象的属性Django的orm操作本...
  • Django之ORM操作

    2019-04-23 18:11:00
    ORM介绍 对象关系映射(Object Relational Mapping,简称ORM) ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。 ... 数据库表里的一行数据 Dja...
  • 1.定义: 对象关系映射(Object Relational Mapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换。...类实例对应---------》数据库表里的一行数据 2.演示:查看ORM生成...
  • 1.定义:对象关系映射(Object Relational Mapping,简称ORM)...类名对应------》数据库中的表名类属性对应---------》数据库里的字段类实例对应---------》数据库表里的一行数据2.演示:查看ORM生成sql语句 1)使用...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

关系表里的属性字段