el-upload有几种使用情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了el-upload有几种使用情况相关的知识,希望对你有一定的参考价值。

参考技术A 1、用action上传
2、使用http-request="fn"自定义进行上传
共同之处
1、当默认:auto-upload="true" ,选取了文件就走了action或者http-request的接口方法。
当:auto-upload="false" ,都需要通过this.$refs.upload.submit()进行接口或者方法的调用

何时使用action,何时使用http-request。
看后台,如果后台只给了个拼接网址的接口时候,没提文件时候,用action。
如果后台给多个参数包含文件地址等,或者需要三方文件服务器oss等时候。用http-reques

//当 :auto-upload="false"的时候,要注意以下问题
1、选完文件,http-request="fn" 的fn(file)是不存在file的,因为没走接口,所以没有回调
2、使用before-upload可以限制文件大小和格式, :auto-upload="false"时候,这个钩子是不会被触发的,可以使用on-change进行处理。同样都有file入参
=====另外需要注意的问题====
使用了on-change方法 直接赋值this.fileList = fileList,
删除需要用的on-remove

:on-preview="handlePreview" 是点击每条数据时候触发

on-success文件上传成功时的钩子,如果:auto-upload="false",是在submit()后触发

Hibernate有几种查询方法

转录:
从点到面,讲讲hibernate查询的6种方法。分别是HQL查询
,对象化查询Criteria方法,动态查询DetachedCriteria,例子查询,sql查询,命名查询。
如果单纯的使用hibernate查询数据库只需要懂其中的一项就可以完成想要实现的一般功能,但是
从一个点,让我们掌握6中方法,则提供了更多选择。每一种方法都有其适用的情况与前提。
HQL查询
HQL是hibernate自己的一套查询语言,于SQL语法不同,具有跨数据库的优点。示例代码:

static void query(String name)
Session s=null;
try
s=HibernateUtil.getSession();

//from后面是对象,不是表名
String hql="from Admin as admin where admin.aname=:name";//使用命名参数,推荐使用,易读。
Query query=s.createQuery(hql);
query.setString("name", name);

List<Admin> list=query.list();

for(Admin admin:list)
System.out.println(admin.getAname());

finally
if(s!=null)
s.close();



适用情况:常用方法,比较传统,类似jdbc。缺点:新的查询语言,适用面有限,仅适用于Hibernate框架。
对象化查询Criteria方法:

static void cri(String name,String password)
Session s=null;
try
s=HibernateUtil.getSession();

Criteria c=s.createCriteria(Admin.class);
c.add(Restrictions.eq("aname",name));//eq是等于,gt是大于,lt是小于,or是或
c.add(Restrictions.eq("apassword", password));

List<Admin> list=c.list();
for(Admin admin:list)
System.out.println(admin.getAname());

finally
if(s!=null)
s.close();



适用情况:面向对象操作,革新了以前的数据库操作方式,易读。缺点:适用面较HQL有限。
动态分离查询DetachedCriteria

static List dc(DetachedCriteria dc)

Session s = HibernateUtil.getSession();
Criteria c = dc.getExecutableCriteria(s);
List rs = c.list();
s.close();
return rs;


DetachedCriteria dc = DetachedCriteria.forClass(User.class);
int id = 1;
if (id != 0)
dc.add(Restrictions.eq("id", id));
Date age = new Date();
if (age != null)
dc.add(Restrictions.le("birthday", age));
List users = dc(dc);
System.out.println("离线查询返回结果:" + users);

适用情况:面向对象操作,分离业务与底层,不需要字段属性摄入到Dao实现层。 缺点:适用面较HQL有限。
例子查询

static List example(User user)
Session s = HibernateUtil.getSession();
List<User> users = s.createCriteria(User.class).add(
Example.create(user)).list();
// List<User>
// users2=s.createCriteria(User.class).add((Example.create(user)).ignoreCase())
// .createCriteria("child").add((Example.create(user))).list();
return users;


适用情况:面向对象操作。 缺点:适用面较HQL有限,不推荐。

sql查询

static List sql()

Session s = HibernateUtil.getSession();
Query q = s.createSQLQuery("select * from user").addEntity(User.class);
List<User> rs = q.list();
s.close();
return rs;


适用情况:不熟悉HQL的朋友,又不打算转数据库平台的朋友,万能方法 缺点:破坏跨平台,不易维护,不面向对象。
命名查询

static List namedQuery(int id)
Session s = HibernateUtil.getSession();
Query q = s.getNamedQuery("getUserById");
q.setInteger("id", id);
return q.list();


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.sy.vo.User" table="user" catalog="news">

</class>
<!-- 命名查询:定义查询条件 -->
<query name="getUserById">
<![CDATA[from User where id=:id]]>
</query>
<!-- 命名查询中使用sql,不推荐使用,影响跨数据库
<sql-query name="getUserById2">
<![CDATA[select * from User where ]]>
</sql-query> -->
</hibernate-mapping>

适用情况:万能方法,有点像ibatis轻量级框架的操作,方便维护。 缺点:不面向对象。基于hql和sql,有一定缺陷。
参考技术A Hibernate有4种查询方法。
HQL 通过Hibernate提供的查询语言进行查询。Hibernate Query lanague
EJBQL(JPQL 1.0) 是EJB提供的查询语言
QBC(query by cretira)通过Cretira接口进行查询
QBE(query by Example) 通过Example编程接口进行查询
从功能强弱上排序:NativeSQL > HQL > EJBQL(JPQL 1.0) >QBC(query by cretira) >QBE(query by Example) 1: QBE (Query By Example) QBC查询方式。
QBC(Query By Criteria)查询方式是 Hibernate 提供的“ 更加面向对象”的一种检索方式。 QBC 在条件查询上比 HQL 查询更为灵活,而且支持运行时动态天生查询语句。
在Hibernate 应用中使用 QBC 查询通常经过 3 个步骤:
(1)使用 Session 实例的 createCriteria() 方法创建 Criteria 对象
(2)使用工具类 Restrictions 的相关方法为 Criteria 对象设置查询对象
(3)使用 Criteria 对象的 list() 方法执行查询,返回查询结果QBE查询QBE查询就是检索与指定样本对象具有相同属性值的对象。因此QBE 查询的关键就是样本对象的创建,样本对象中的所有非空属性均将作为查询条件。 QBE 查询的功能子集,固然 QBE 没有 QBC 功能大,但是有些场合 QBE 使用起来更为方便。
工具类Example 为 Criteria 对象指定样本对象作为查询条件Java代码:
1 Session session = HibernateSessionFactory.getSessionFactory().openSe ssion();
2 Transaction ts = session.beginTransaction();
3 Customer c = new Customer();
4 c.setCname("Hibernate");
5 Criteria criteria = session.createCriteria(Customer. class );
6 Criteria.add(Example.create(c));
7 Iterator it = criteria.list().iterator();
8 ts.commit();
9 HibernateSessionFactory.closeSession();
参考技术B 我只说 我常用的几种 Hibernate hql查询方法

Hibernate 在Spring管理下 可以用类继承了(extends) HibernateDaoSupport
然后 下面是一个我熟悉的写法:
public List<Prov> find(final String hql, final int currentPage, final int pageSize,
final String[] params)

return this.getHibernateTemplate().executeFind(new HibernateCallback()


@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException

Query query = session.createQuery(hql);
for(int i =0 ;i<params.length;i++)

query.setString(i, params[i]);

query.setFirstResult(PageUtil.startRec(currentPage, pageSize));
query.setMaxResults(pageSize);

return query.list();

);


调用和传递参数

String hql ="from Prov p where p.prov_id like ? and p.prov_name like ?";
String[] params ="%"+prov.getProv_id()+"%","%"+prov.getProv_name()+"%";
return super.find(hql,currentPage,pageSize,params);
分页查询 得到 各种条件下的省市

List<LinkUser> list = (List<LinkUser>) getHibernateTemplate().find(
"from LinkUser lu where lu.userNo = '" + no + "'");
等等。

如果只用 Hibernate 简单的 直接写

protected List<T> find(String hql, String... params)


Query query = session.createQuery(hql);
for (int i = 0; i < params.length; i++)

query.setString(i, params[i]);

return query.list();

或protected List<T> page(String hql,int currentPage,int pageSize, String... params)


Query query = session.createQuery(hql);
for (int i = 0; i < params.length; i++)

query.setString(i, params[i]);

query.setFirstResult(PageUtil.startRec(currentPage, pageSize));
return query.list();

除了以上还有criteria查询,本人没用过,网上还有许多,你自己可以搜搜,学习学习
参考技术C

HIbernate主要常用有三种查询方式HQL、QBC、SQL:

1).HQL(Hibernate Query Language):hibernate数据查询语言;

2).QBC(Query By Criteria):规则查询

3).SQL:原生的SQL语句(较为复杂的情况下使用)

想要详细了解的可以看一下下面的几篇文章:

    QBC数据查询

    HQL单表查询

    HQL多表查询

    希望对你有所帮助~

参考技术D 是想查询什么呢?

以上是关于el-upload有几种使用情况的主要内容,如果未能解决你的问题,请参考以下文章

Element中的el-upload使用过程中踩的坑

遍历生成el-upload上传组件及遍历回填el-upload上传数据

el-upload上传附件-总结

el-upload上传附件-总结

el-upload上传附件-总结

elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除