update

thinkphp5 的model层

混江龙づ霸主 提交于 2020-03-01 16:28:42
thinkphp3.2与thinkPHP5.0的区别 一、thinkphp3.2与thinkPHP5.0不同之处 5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别。 模块和控制器 控制器的命名空间有所调整,并且可以无需继承任何的控制器类。 应用命名空间统一为app(可定义)而不是模块名; 控制器的类名默认不带Controller后缀; 控制器操作方法采用return方式返回数据 而非直接输出; 废除原来的操作前后置方法; 支持任意层次的控制器定义和访问; URL访问支持自动定位控制器; 数据库 5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如: 3.2版本 M(‘User’)->where([‘name’=>’thinkphp’])->find(); 5.0版本 db(‘User’)->where(‘name’,’thinkphp’)->find(); 主要改进如下: 支持链式查询操作; 数据查询支持返回对象、数组和PDOStatement对象; 数据集查询支持返回数组和Collection对象; 增加查询构造器,查询语法改变; 支持闭包查询; 支持分块查询; 支持视图查询; 增加SQL监听事件; 模型 5.0的模型变化是最大的,基本上模型是完全面向对象的概念

Hibernate4实战 之 第四部分:关系映射

血红的双手。 提交于 2020-03-01 15:13:34
数据表之间的关系分为三类:一对一、一对多、多对多 一对一数据表(部门表 和 部门主管表) 一对多数据表(部门表 和 部门下的人员表) 多对多数据表(部门表 和 人员表) 根据相互寻找的关系又分:单向和双向 对象一对一 (双向 ) java代码: public class A { private B b = null; } public class B { private A a = null; } n对象一对多 (双向) public class A { private B b = null; } public class B { private Collection<A> colA = null; } n对象多对多 (双向) public class A { private Collection<B> colB = null; } public class B { private Collection<A> colA = null; } 双向一对多是最常用的映射关系 <key>元素 <key> 元素在父映射元素定义了对新表的连接,并且在被连接表中定义了一个外键引用原表的主键的情况下经常使用。 java代码: <key column="columnname"(1) on-delete="noaction|cascade"(2) property-ref="propertyName"

auto_now

拟墨画扇 提交于 2020-03-01 13:44:20
我们都知道 django 里面模型设计 一般会有常用的两个字段 创建时间 和 修改时间,这两个字段的定义是这样的: created = models.DateTimeField(auto_now_add=True, verbose_name="添加时间") updated = models.DateTimeField(auto_now=True, verbose_name="更新时间") 一般来说,你对这个表的数据有修改的时候,修改时间会随之变动,但是我遇到一个情况,是即使你修改了这条数据的内容,但是修改时间并没有变动。 问题解决: 修改更新有两种方法 1)save 修改模型类对象的属性,然后执行save()方法 hero = HeroInfo.objects.get(hname='猪八戒') hero.hname = '猪悟能' hero.save() 2)update 使用模型类.objects.filter().update(),会返回受影响的行数 HeroInfo.objects.filter(hname='沙悟净').update(hname='沙僧') 第一种修改更新的方法是会触发updated = models.DateTimeField(auto_now=True, verbose_name="更新时间")字段的更新时间的,第二种不会触发。

MySQL存储过程之事务管理

浪尽此生 提交于 2020-03-01 06:01:17
ACID:Atomic、Consistent、Isolated、Durable 存储程序提供了一个绝佳的机制来定义、封装和管理事务。 1,MySQL的事务支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务、行级锁、并发 Berkeley DB:支持事务 隔离级别: 隔离级别决定了一个session中的事务可能对另一个session的影响、并发session对数据库的操作、一个session中所见数据的一致性 ANSI标准定义了4个隔离级别,MySQL的InnoDB都支持: READ UNCOMMITTED:最低级别的隔离,通常又称为dirty read,它允许一个事务读取还没commit的数据,这样可能会提高性能,但是dirty read可能不是我们想要的 READ COMMITTED:在一个事务中只允许已经commit的记录可见,如果session中select还在查询中,另一session此时insert一条记录,则新添加的数据不可见 REPEATABLE READ:在一个事务开始后,其他session对数据库的修改在本事务中不可见,直到本事务commit或rollback。在一个事务中重复select的结果一样,除非本事务中update数据库。 SERIALIZABLE

HowTo: Updating Drupal 6.x to newer minor version

不羁岁月 提交于 2020-03-01 02:30:36
The update process described in this HowTo is based on updating three Drupal sites to v6.10 — one from v6.8, and two from v6.9. You should encounter no problems updating several minor versions in one go — for example, from v6.5 straight to v6.11 — as the new version contains a file that will update the database and other settings, if needed, when you run update.php. The instructions found in UPGRADE.txt (in the Drupal Core archive), existing handbooks, and tutorials mainly focus on the issues involved in upgrading to a new major version, such as Drupal 5.x to 6.x. When you are performing a

MySQL 主从幂等复制slave_exec_mode=IDEMPOTENT

若如初见. 提交于 2020-03-01 01:48:12
MySQL slave_exec_mode 参数用于控制主从复制数据冲突时的处理策略,可选值有STRICT和IDEMPOTENT,分别代表严格模式和幂等模式,默认值为STRICT,该参数可动态调整。 原文地址: https://mytecdb.com/blogDetail.php?id=76 STRICT,严格模式 IDEMPOTENT,幂等模式 默认STRICT模式下,从库复制过程中,发现数据冲突,会立即报错,并中断复制线程。设置为IDEMPOTENT,遇到主键或唯一键冲突以及主键不存在时,并不会报错,会直接覆盖数据或者忽略数据不存在,主从复制仍然正常进行。设置这个参数将会立即生效,并不需要重启复制。 一、IDEMPOTENT幂等复制测试 MySQL 版本 5.7.19 binlog_format:ROW 表结构:id主键,name varchar(50) CREATE TABLE tb ( id int(11) NOT NULL, name varchar(50) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 1. insert 主键或唯一键冲突 主库表数据:空 备库表数据:1,‘1’ 此时在主库插入数据,1,‘2’ 结果: 备库表数据:1,‘2’,主键或唯一键冲突

秒杀的几种方案(包括限制用户秒杀次数基于redis实现)

爷,独闯天下 提交于 2020-02-29 23:03:42
1. 效率最低(同步关键字,低并发可以,高并发不行,10000个线程,甚至十几秒钟才扣减一个库存) for update 也是悲观锁,会锁住当前行,影响性能 1.乐观锁机制(加version版本号) 3.用mybatis自带的行锁,同一时间只能有一个线程修改某一行数据 直接上代码: mapper代码: <?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="com.example.mapper.ProductDao"> <!--FOR UPDATE 悲观锁没用--> <select id="getProductAmountById" resultType="com.example.entity.Product"> SELECT id ,amount,version FROM product WHERE id=1 FOR UPDATE; </select> <update id="subtracStock" > UPDATE product set amount = amount - #{buyAmount},

ADO.NET结合C#常见的数据库操作(二)

我与影子孤独终老i 提交于 2020-02-29 16:20:43
  现在接着上次的来讲SqlDataAdapter的相关应用。   SqlDataAdapter 表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。 此类不能被继承。 一、常见构造函数   ◆ SqlDataAdapter () 初始化 SqlDataAdapter 类的新实例。   ◆ SqlDataAdapter(SqlCommand) 初始化 SqlDataAdapter 类的新实例,用指定的 SqlCommand 作为 SelectCommand 的属性。   ◆ SqlDataAdapter(String, SqlConnection) 使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的一个新实例。 二、常用属性   ◆ DeleteCommand 获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录。   ◆ InsertCommand 获取或设置一个 Transact-SQL 语句或存储过程,以在数据源中插入新记录。   ◆ SelectCommand 获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。   ◆ UpdateCommand 获取或设置一个 Transact-SQL 语句或存储过程

mybatis执行批量更新batch update 的方法(oracle,mysql)

痴心易碎 提交于 2020-02-29 08:59:51
oracle和mysql数据库的批量update在mybatis中配置不太一样: oracle数据库: <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin" close="end;" separator=";"> update test <set> test=${item.test}+1 </set> where id = ${item.id} </foreach> </update> mysql数据库: mysql数据库采用一下写法即可执行,但是数据库连接必须配置:&allowMultiQueries=true 例如:jdbc:mysql://192.168.1.236:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";">

【数据库】数据库的增删改查操作

给你一囗甜甜゛ 提交于 2020-02-29 07:42:18
注意的几点:1.如果你在cmd中书命令的时候,输入错了就用\c跳出 2.\s查看配置信息 一、操作文件夹(库) 增:create database db1 charset utf8; 删:drop database db1; 改:alter database db1 charset gbk; 查:show databases; #查看所有的数据库 show create database db1; #查看db1数据库 二、操作文件(表) 切换到文件夹下:use db1 增:create table t1(id int,name char(10)) engine=innodb; 删:drop table t1; 改:alter table t1 add age int; alter table t1 modify name char(12); 查:show tables; #查看所有表 show create table t1; #查看t1表 desc t1;#查看表结构 show create table t1\G; #查看表详细结构,可加\G select * from t1; #查看所有的表数据 三、操作文件的一行行内容(记录) 增:insert into db1.t1 values(1,'haiyan'),(2,'yaling'),(3,'xiaoxiao');