精华内容
下载资源
问答
  • 创建DataAdapter的几种方法

    千次阅读 2018-07-30 11:49:45
    DataApter充当数据库和ADO.Net模型中非链接数据对象之间的桥梁,使用该对象的Fill方法...通常来说,创建DataAdapter有几种方法 下面做下简单的概括; private static string connString = @"Data Source=DE...

    DataApter充当数据库和ADO.Net模型中非链接数据对象之间的桥梁,使用该对象的Fill方法来实现数据库记录和导入到DataSet对象中,使用Update方法将存储在dataset对象中的数据更新到数据库中去。
    通常来说,创建DataAdapter有几种方法
    下面做下简单的概括;

     private static string connString = @"Data Source=DESKTOP-GVLLFG5\SQLEXPRESS;Initial Catalog=db_Mytime;Integrated Security=True";
            public static SqlConnection connection = new SqlConnection(connString);//初始化sqlConnnection的新实例
    
            private static SqlDataAdapter sqlda = null;
            private static SqlCommand cmd = new SqlCommand("select * from db_time", connection);
            //使用一个查询命令SqlCommamd对象作为参数
            SqlDataAdapter da1 = new SqlDataAdapter(cmd);
           //使用查询命令字符串和SqlConnction对象作为参数
            SqlDataAdapter da2 = new SqlDataAdapter("select * from db_time", connString);
             //使用查询命令串的和数据库链接字符串作为参数
    
            SqlDataAdapter da3 = new SqlDataAdapter("select * from db_time", connection);
    

    其中使用查询命令串和和SqlConection对象作为参数创建sqladapter比较常见,

    展开全文
  • 创建Image图像的几种方法

    千次阅读 2017-01-17 16:46:02
    创建Image图像的方式主要分三,一是通过File文件创建Image图像,二是通过ImageIcon创建Image图像,三是通过Toolkit中的函数创建Image图像。  一、通过File文件创建Image图像 1、通过文件选择器选择文件,创建File...

    创建Image图像的方式主要分三种,一是通过File文件创建Image图像,二是通过ImageIcon创建Image图像,三是通过Toolkit中的函数创建Image图像。

     一、通过File文件创建Image图像

    1、通过文件选择器选择文件,创建File文件,创建Image图像

           Image images = new Image();
         JFileChooser chooser = new JFileChooser();
          chooser.setName("选择");
          chooser.setMultiSelectionEnabled(false);     //设置文件选择器只能选择单个文件
          int result = chooser.showOpenDialog(this);   //打开文件选择器      
             if(result == JFileChooser.APPROVE_OPTION){  
              File file = chooser.getSelectedFile();
                  try{                                 //对异常进行处理
                     images = ImageIO.read(file);
                  }catch(IOException e){
                     e.printStackTrace();
                  }
          }

    2、通过相对路径和绝对路径创建File文件,创建Image图像

             Image images = new Image();
             File file = new File("1.gif"); //字符串是文件的绝对路径或者相对路径 
             try{ //对异常进行处理 
                  images = ImageIO.read(file); 
             }catch(IOException e){ 
                  e.printStackTrace();
            }
     二、通过ImageIcon创建Image图像

            Image images = new Image();  
            URL url = this.getClass().getResource("1.gif");//文件的相对路径
    	ImageIcon imageIcon=new ImageIcon(url);
    	images =imageIcon.getImage();
    
    注:在网上找的是getResource(" "),中填文件的相对路径,(可以通过System.out.println(System.getProperty("user.dir"));查询自己工程路径),但是在自己电脑上并不是绝对路径,而是在包含class文件的文件夹下。(使用eclipse)
    三、通过Toolkit工具中的函数创建Image图像

            Image images = new Image();  
            Toolkit tool = Toolkit.getDefaultToolkit();
            images = tool.getImage("1.gif");//字符串为绝对路径或相对路径

            在eclipse中是使用第一种方法通过File文件创建Image文件,如果为gif图像时,图像静止。使用第二种方法通过ImageIcon创建Image图像和的第三种方法通过Toolkit工具中的函数创建Image图像通过Toolkit工具中的函数创建Image图像,gif图像正常显示。

    展开全文
  • Spring Data JPA多表查询几种方法

    千次阅读 2019-11-29 16:51:04
    Spring Data JPA多表查询几种方法 前言 公司目前在ORM框架上选型只有两个选择 MyBatis-Plus Spring Data JPA 相信很多人会选择MyBatis-Plus(MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的...

    Spring Data JPA多表查询的几种方法

    前言

    公司目前在ORM框架上选型只有两个选择

    MyBatis-Plus

    Spring Data JPA

    相信很多人会选择MyBatis-Plus(MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生),主要因为JPA对多表复杂查询很不友好,特别是现在建表很多不用外键,所以很多人使用JPA查询就很不方便,但如果有人说:不行,我一定要用JPA,怎么办呢?所以本文就简单说明一下自己所知道的几种JPA的多表复杂查询方法。

    讲解前先创建两张表一张student(学生)表和一张teacher(教师)表,对应两个实体类:

    @Entity
    @Data
    @Accessors(chain = true)
    public class Student {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @ApiModelProperty("学生ID")
        @Column(insertable = false, updatable = false, columnDefinition = "INT UNSIGNED  COMMENT '学生ID'")
        private Integer studentId;
    
        @ApiModelProperty("学生名")
        @Column(length = 50, columnDefinition = "VARCHAR(255) NOT NULL COMMENT '学生名'")
        private String studentName;
    
    }
    
    @Entity
    @Data
    @Accessors(chain = true)
    public class Teacher {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @ApiModelProperty("教师ID")
        @Column(insertable = false, updatable = false, columnDefinition = "INT UNSIGNED COMMENT '教师ID'")
        private Integer teacherId;
    
        @ApiModelProperty("教师名")
        @Column(length = 50, columnDefinition = "VARCHAR(255) NOT NULL COMMENT '教师名'")
        private String teacherName;
    
    }
    

    两张表目前是没有什么关联的

    一、单纯使用注解

    相信大家去百度或者谷歌第一种推荐的就是使用自带的注解:

    • @OneToOne
    单向一对一

    如果一个学生对应一个老师,那么就需要在教师表或者学生表添加对应关联的ID,而使用注解就只需在学生表添加

    @OneToOne
    @JoinColumn(name = "teacher_id", referencedColumnName = "teacherId")
    //设置生成的外键名称为teacher_id,对应Teacher类中的teacherId
    private Teacher teacher;
    

    自动创建表你会发现student表中会增加teacher_id的外键,如果不想自动创建外键可以在@JoinColumn中加入 foreignKey = @ForeignKey(name = “none”, value = ConstraintMode.NO_CONSTRAINT),表示不创建外键。这时查询单独查Student也会查询到Teacher。

    双向一对一

    有时我想根据Teacher查询到对应的Student,那么需要在Teacher类中添加

    @OneToOne(mappedBy = "teacher")//对应Student中的Teacher对象的名字
    private Student student;
    

    这样就可以两边都查询到对应的信息。

    • @OneToMany
    • @ManyToOne

    一对多和多对一和一对一其实基本一样,只不过把对象换成List,查询时就能获取对应的集合,这里不多描述。

    • @ManyToMany

    多对多其实和上面的也基本一样,只不过这是不能使用单个字段,需要创建一张中间表进行映射,需要加入把Student类中的teacher修改:

    @ManyToMany
    @JoinTable(name = "student_teacher_inner",  //创建中间表student_teacher_inner
    joinColumns = {@JoinColumn(name = "student_id", referencedColumnName = "studentId")},
    inverseJoinColumns = {@JoinColumn(name =  "teacher_id",referencedColumnName = "teacherId")})
    private List<Teacher> teacher;
    

    @JoinTable

    joinColumns元素描述关系所有方在中间表的连接列,inverseJoinColumns元素指定了反方在中间表的连接列。

    对于这种注解相信大家都很熟悉了,我这边就不仔细讲解了,主要注意的点有:

    • 自动建立外键

    如果用这种方法查询就避免不了建外键,而外键主要是保证数据库数据的完整性和一致性,对于使用外键有好处也有坏处,主要坏处是操作数据方面有了很多的限制,增加了维护成本,需要看你怎么取舍,但很多项目都是业务进行控制数据库的完整性和一致性,不需要建立外键。

    • 不能分页查询

    如果是一对多,多对多,那么只能一次查询全部对应的集合,不能使用分页。

    • 双向关联会出现死循环

    例如你查询Student对象,哪里Student里有Teacher,而Teacher里又有Student,所以会一直循环下去,如果用toString方法或转成JSON那么是必然会造成死循环的,所以利用sping boot等框架将后台数据返回给前台也是同理,需要Student对象的teacher变量上加上注解:

    @JsonIgnoreProperties(value = {"student"})
    

    表明忽略字段名称student,同理Teacher对象也需要加上对应的注解

    • 运行时报错

    No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer
    and no properties discovered to create BeanSerializer

    需要在对象上加上

    @JsonIgnoreProperties(value = {"handler", "hibernateLazyInitializer", "fieldHandler"})
    
    • 复杂查询需要额外使用Specification

    如果两张表都是双向多对多关系,那么我想根据教师查出学生名字等于“学生3”的Student集合,这时就需要

    Specification<Teacher> specification = Specification.where((root, query, cb) -> {
        Join<Teacher, student> join = root.join("student", JoinType.LEFT);
        return cb.equal(join.get("studentName"), "学生3");
    });
    List<Teacher> all = teacherDao.findAll(specification);
    

    这里只写了实现代码,具体解析就不详细说明

    二、使用@Query注解

    如果觉得上面的方法很难用,而且没有分页查询,那么可以使用@Query注解查询,需要说明一下@Query默认使用hsql语言进行查询,如果不知道hsql是什么可以百度一下,两者最大的区别就是sql是使用表的字段名,而hsql是使用表的字段名,其他语法略有不同。

    • 现在学生教师一对一,在学生表手动创建一个teacher_id字段用来对应教师表,通过学生获取对应的教师
    • 创建一个StudentVO展示获取到的数据
    @Data
    @Accessors(chain = true)
    public class StudentVO {
    
        @ApiModelProperty("学生ID")
        private Integer studentId;
    
        @ApiModelProperty("学生名")
        private String studentName;
    
        @ApiModelProperty("教师ID")
        private Integer teacherId;
    
        @ApiModelProperty("教师名称")
        private String teacherName;
    
        public StudentVO(Integer studentId, String studentName, Integer teacherId, 	   String teacherName) {
            this.studentId = studentId;
            this.studentName = studentName;
            this.teacherId = teacherId;
            this.teacherName = teacherName;
        }
        
        public StudentVO() {
        }
    
    }
    
    
    • 通过在Dao编写方法获取到对应的值
    //没有构造函数会报Unable to locate appropriate constructor on class
    @Query(value = "select new com.luwei.model.student.StudentVO(s.studentId,s.studentName ,t.teacherId ,t.teacherName) " +
    "from Student s left join Teacher t  on s.teacherId=t.teacherId")
    Page<StudentVO> findCustom(Pageable pageable);
    
    

    这样很简单就能进行联合查询,如果里想用传统的sql语句可以把nativeQuery 改为true表示使用传统sql语句,需要注意的是分页sql语句需要自己实现

    //不用驼峰,不然会报找不到列名
    @Query(value = "select s.student_id ,s.student_name,t.teacher_id " +
    "from tb_student s left join tb_teacher t  on s.teacher_id = t.teacher_id ",
    countQuery = "SELECT COUNT(*) FROM tb_student", nativeQuery = true)
    Page<Student> findCustom(Pageable pageable);
    
    

    运用@Query也很容易根据自己的sql语句查询到对应的字段,但有唯一的缺点,不能动态查询,也是致命的缺点,不能像mybatis哪有可以根据你的参数是否为空来进行动态添加,对于参数不确定时需要编写不同的方法,所以如果需要动态查询的不适用使用该注解。那么有没有一种可以动态查询的方法了?答案是有的。

    三、使用EntityManager

    EntityManager是JPA中用于增删改查的接口,它的作用相当于一座桥梁,连接内存中的java对象和数据库的数据存储。那么如何获得EntityManager对象呢?这取决于你的EntityManger对象的托管方式,主要有以下两种方式:

    • 容器托管的EntityManager对象

    容器托管的EntityManager对象最为简单,编程人员不需要考虑EntityManger的连接,释放以及复杂的事务问题等等,所有这些都交给容器来完成。

    • 应用托管的EntityManager对象

    应用托管的EntityManager对象,编程人员需要手动地控制它的释放和连接、手动地控制事务等。

    我这边使用容器托管,获取EntityManager对象如下:

    @PersistenceContext
    private EntityManager entityManager;
    
    

    现在我获取学生名字带有小明的StudentVO的信息就需要这样编写代码:

    //需要无参构造方法,编写sql语句
    StringBuilder sql = new StringBuilder("select s.student_id StudentId,s.student_name StudentName,t.teacher_id teacherId,t.teacher_name teacherName " +
    "from tb_student s left join tb_teacher t  on s.teacher_id = t.teacher_id where 1=1 ");
    //查询参数
    String studentName = "小明";
    if (!TextUtils.isEmpty(studentName)) {
    	sql.append(" and s.student_name = ? ");
    }
    
    //添加普通sql查询
    NativeQueryImpl sqlQuery = entityManager.createNativeQuery(sql).unwrap(NativeQueryImpl.class);
    
    //映射返回类
    Query query = sqlQuery.setResultTransformer(Transformers.aliasToBean(StudentVO.class));
    //添加查询参数
    query.setParameter(1, studentName);
    
    //执行
    List<StudentVO> list = query.getResultList();
    
    

    这样就可以实现查询,如果有动态条件只需拼接好sql就可以了,但这个方法还有一个缺点,就是不能自动帮我们分页,需要我们自己拼接分页条件。有的人就可能会说了,这样每次都需要拼接是不是很麻烦啊,但如果你把所有逻辑抽成一个方法,就会发现其实感觉还可以。

    示例

    下面示范下分页查询如果学生名字带有小明的学生和教师的信息,返回依然时StudentVO。准备一下抽出来的方法:

    • 把基本查询sql语句转为查询总数的sql语句的方法

    其实我们用page,看日志就会发现,每次分页查询都是执行两条sql语句,一条是查询总数的sql,一条原来的sql,是因为框架帮我们把原来的sql语句转成可以查询总数的sql语句,我们也写一个类似的方法

    /**
     * 转为查询总数的sql语句
     *
     * @param sql 原来的sql语句
    */
    private static String getCountSql(String sql) {
        String substring = null, replace = null;
        if (sql.toLowerCase().startsWith("select")) {
            int from = sql.lastIndexOf("FROM");
            if (from != -1) {
                substring = sql.substring(6, from);
    
            } else if ((from = sql.lastIndexOf("from")) != -1) {
                substring = sql.substring(6, from);
            }
        }
        if (substring != null) {
            replace = sql.replace(substring, " count(*) ");
        }
        return replace;
    }
    
    

    这方法只是简单的转换,找到select后把后面的参数都换为count(*),这其实并不严谨,仅供参考

    • 拼接分页条件方法

    原来的sql语句也需要拼接limt 关键字,

    /**
     * 拼接分页字符串
     *
     * @param stringBuilder
     * @param page 多少页
     * @param size 每页多少个
     */
    public static StringBuilder createLimit(StringBuilder stringBuilder, Integer page, Integer size) {
        return stringBuilder.append(" LIMIT ").append(page * size).append(" , ").append(size);
    }
    
    
    • 获取总页数的方法
    /**
     * @param total 总数
     * @param size  每页多少个
     * @return 一共有多少页
     */
    public static int getTotalPages(int total, int size) {
        return (total + size) / size;
    }
    
    
    • 查询方法

    最后还需把上面这些方法抽成一个查询方法中

     /***
         *
         * @param sql 查询的原sql语句
         * @param page 分页
         * @param clazz 返回的对象
         * @param conditionList where条件集合
         * @param <T>
         * @return 返回page
         */
        private <T> Page<T> findPage(StringBuilder sql, Pageable page, T clazz, List<String> conditionList) {
            //原sql转换查询总数sql语句
            String countSql = getCountSql(sql.toString());
            Query countQuery = entityManager.createNativeQuery(countSql);
            //原sql语句添加limit
            StringBuilder limit = createLimit(sql, page.getPageNumber(), page.getPageSize());
            NativeQueryImpl sqlQuery = entityManager.createNativeQuery(limit.toString()).unwrap(NativeQueryImpl.class);
            Query nativeQuery = sqlQuery.setResultTransformer(Transformers.aliasToBean(clazz.getClass()));
    
            //添加where条件
            for (int i = 1; i <= conditionList.size(); i++) {
                countQuery.setParameter(i, conditionList.get(i - 1));
                nativeQuery.setParameter(i, conditionList.get(i - 1));
            }
            //查询总数
            int total = ((BigInteger) countQuery.getResultList().get(0)).intValue();
            //原sql查询到内容
            List<T> list = nativeQuery.getResultList();
            //设置分页信息
            return new PageImpl<>(list, page, getTotalPages(total, page.getPageSize()));
        }
    
    

    最后调用findPage查询方法,就能获取到对应的参数了

    //分页参数
    Pageable pageRequest = PageRequest.of(1, 2);
    //查询的sql语句
    StringBuilder sql = new StringBuilder("select s.student_id StudentId,s.student_name StudentName,t.teacher_id teacherId,t.teacher_name teacherName " +
            "from tb_student s left join tb_teacher t  on s.teacher_id = t.teacher_id where 1=1 ");
    String studentName = "小明";
    //where条件的list
    List<String> conditionList = new ArrayList<>();
    //模拟是否需要添加条件
    if (!TextUtils.isEmpty(studentName)) {
        sql.append(" and s.student_name = ? ");
        conditionList.add(studentName);
    }
    Page<StudentVO> page = findPage(sql, pageRequest, new StudentVO(), conditionList);
    
    

    四、总结

    总的来说查询有三种方法:

    • 单纯使用注解

    比较简单,一般需要创建外键,如果不是多对多也可以不创,不能分页查询,如果只是简单一对一可以使用,其他情况复杂不推荐。

    • 使用@Query注解

    也是比较简单,可以帮你实现分页逻辑,但不能动态条件参数查询,不适合查询条件参数不确定的情况,如果查询条件确定,那么是推荐使用这种。

    • 使用EntityManager

    用起来相当复杂,需要自己拼接查询条件和分页条件,但如果抽成方法用起来还是蛮舒服的,所以最终还是推荐使用EntityManager进行复杂查询。

    展开全文
  • Bmob中的几种查询方法

    万次阅读 2015-12-19 15:03:52
    //执行查询方法 query.findObjects(this, new FindListener() { @Override public void onSuccess(List<Lost> object) { // TODO Auto-generated method stub showToast("查询成功:共" + object.size() + "条...


    package com.kavinapps.androidk.my2webview;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import org.json.JSONArray;
    
    import java.util.List;
    
    import cn.bmob.v3.Bmob;
    import cn.bmob.v3.BmobQuery;
    import cn.bmob.v3.listener.FindCallback;
    import cn.bmob.v3.listener.FindListener;
    import cn.bmob.v3.listener.GetListener;
    import cn.bmob.v3.listener.UpdateListener;
    
    /**
     * Created by Administrator on 15-12-19.
     */
    public class DataManager extends Activity{
        Button queryButton,updateButton;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_datamanager);
            //初始化 Bmob SDK,第一个参数为上下文,第二个参数为Application ID
            Bmob.initialize(this, "e9ae0dc754f7478146a81d9842991d8b");
            queryButton = (Button)findViewById(R.id.queryButton);
            updateButton = (Button)findViewById(R.id.updateButton);
    
            queryButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    queryData();
                }
            });
            updateButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    updateData();
                }
            });
        }
        /*
            * 查询数据
            * */
        public void queryData(){
            BmobQuery query = new BmobQuery("Lost");
            query.findObjects(this, new FindCallback() {
                @Override
                public void onSuccess(JSONArray jsonArray) {
                    //注意:查询结果是JSONArray
                    showToast("查询成功:" + jsonArray.length());
                }
    
                @Override
                public void onFailure(int i, String s) {
                    showToast("查询失败:" + s);
                }
            });
        }
        //更新数据
        //修改数据只能通过objectId来修改,目前不能通过查询找objectId,然后修改的方法。
        public void updateData(){
            Lost lost = new Lost();
            lost.setDescribe("15206771922");
            lost.update(this, "96063af175", new UpdateListener() {
                @Override
                public void onSuccess() {
                    showToast("更新成功");
                }
    
                @Override
                public void onFailure(int i, String s) {
                    showToast("更新失败" + s);
                }
            });
        }
        //查询单条数据
        public void querySingleData(){
            BmobQuery<Lost> query = new BmobQuery<Lost>();
            query.getObject(this, "96063af175", new GetListener<Lost>() {
    
                @Override
                public void onSuccess(Lost object) {
                    // TODO Auto-generated method stub
                    showToast("查询成功:");
                    //获得数据的objectId信息
                    object.getObjectId();
                }
    
                @Override
                public void onFailure(int code, String arg0) {
                    // TODO Auto-generated method stub
                    showToast("查询失败:" + arg0);
                }
    
            });
        }
        //查询多条数据
        //根据列值查询
        public void queryMultiData(){
            BmobQuery<Lost> query = new BmobQuery<Lost>();
            //查询playerName叫“比目”的数据
            query.addWhereEqualTo("describe", "15206771922");
            //返回50条数据,如果不加上这条语句,默认返回10条数据
            query.setLimit(50);
            //执行查询方法
            query.findObjects(this, new FindListener<Lost>() {
                @Override
                public void onSuccess(List<Lost> object) {
                    // TODO Auto-generated method stub
                    showToast("查询成功:共" + object.size() + "条数据。");
                    for (Lost Lost : object) {
                        //获得数据的objectId信息
                        Lost.getObjectId();
                        //获得createdAt数据创建时间(注意是:createdAt,不是createAt)
                        Lost.getCreatedAt();
                    }
                }
    
                @Override
                public void onError(int code, String msg) {
                    // TODO Auto-generated method stub
                    showToast("查询失败:" + msg);
                }
            });
        }
        //查询指定列
        public void queryRow(){
            //只返回Lost表的objectId这列的值
            BmobQuery<Lost> bmobQuery = new BmobQuery<Lost>();
            bmobQuery.addQueryKeys("objectId");
            bmobQuery.findObjects(this, new FindListener<Lost>() {
                @Override
                public void onSuccess(List<Lost> object) {
                    // TODO Auto-generated method stub
                    showToast("查询成功:共" + object.size() + "条数据。");
                    //注意:这里的Lost对象中只有指定列的数据。
                }
                @Override
                public void onError(int code, String msg) {
                    // TODO Auto-generated method stub
                    showToast("查询失败:" + msg);
                }
            });
        }
        //对数据进行排序
        public void orderData(){
            // 根据score字段升序显示数据
            //query.order("score");
            // 根据score字段降序显示数据
            //query.order("-score");
        }
    
        //Toast
        public void showToast(CharSequence text ){
            Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
        }
    }
    



    展开全文
  • 今天,一名读者出去面试,面试官问他:说说Java8中创建Stream流几种方式?他竟然没回答上来!! Stream概述 Java8中两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream....
  • HQL 简单的几种带条件查询方法

    千次阅读 2016-11-03 00:19:17
    ▼ ...条件查询  ... * 如果传递多个参数,可以采用setParamterList方法  * 在hql中可以使用数据库的函数,如:date_format   第一:可以拼字符串  List students = session.c
  • SQL Server创建链接服务器的几种方式

    千次阅读 2020-11-24 13:04:53
    了链接服务器,我们不需要写任何的程序,就可以实现将一个数据库的数据复制到另一个数据库。 SQL Server链接服务器不仅可以帮助你链接SQL Server,还可以链接Oracle、Access、MySQL、ODBC数据源。 1. SQL Server...
  • sql优化的几种方法

    万次阅读 多人点赞 2017-08-17 20:59:55
    在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法需要的可以参考参考。 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上...
  • neo4j - 查询效率的几种优化思路

    万次阅读 2019-04-14 18:44:12
    尊敬的读者您好:笔者很高兴自己的文章能被阅读,但...若觉得本文对您益处还请帮忙点个赞鼓励一下,笔者在此感谢每一位读者,如需联系笔者,请记下邮箱:zengzenghe@gmail.com,谢谢合作! 最近在公司实...
  • 今天看到一位博友的文章,觉得不错,转载一下,希望对大家帮助,更多文章,请访问... 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询...
  • MSSQL创建临时表的两种方法

    千次阅读 2013-07-13 13:54:33
    下面是创建临时表的两种方法: 第一种方法(全新创建)—— create table #t(uid int,name varchar(100),sex varchar(100),city varchar(100)); 详解: create table意为创建表; #t,意为表名是t,加#号...
  • java创建Timestamp的几种方式,目前总结了以下几种  Java代码  Timestamp time1 = new Timestamp(System.currentTimeMillis());    Timestamp time2 = new Timestamp(new Date().getTime...
  • 1.创建并启动线程的6方式: 1)继承Thread类创建线程 2)实现Runnable接口创建线程 3)使用Callable和FutureTask创建线程 4)使用线程池,例如用Executor框架 5)Spring实现多线程(底层是线程池) 6)定时器Timer ...
  • SQL优化常用的几种方法

    万次阅读 多人点赞 2020-06-29 14:42:42
    在使用JPA时常常出现业务复杂不方便使用名称解析的情况,这时可采用原生SQL来实现,SQL在请求并发数量较多时效率会影响系统的整体效率,在此记录一下sql优化的常用几种方法。 二、优化方法 1、对查询进行优化,...
  • SQL中的几种约束的创建与删除

    万次阅读 2017-03-11 22:39:32
    约束是SQL Server提供的自动保持数据库完整性的一种方法...约束可分为以下几种:1、PRIMARY KEY 主键约束 2、FOREIGN KEY 外键约束 3、UNIQUE 约束 唯一约束 4、CHECK 约束 检查约束 5、DEFUALT 定义 默认约束 一、主键
  • 获取他人ip的几种方法

    万次阅读 多人点赞 2018-08-17 16:12:22
    下面,本文就对如何快速、准确地搜查出对方好友的计算机IP地址,提出如下几种方法,相信能对大家有所帮助!    1、邮件查询法 使用这种方法查询对方计算机的IP地址时,首先要求对方先给你发一封电子邮件,然后你...
  • spring data jpa 几种查询方式

    千次阅读 2018-08-16 15:09:57
    转自:...1.按照jpa规范,通过方法名来创建查询 这种最多. (简单的用这个,条件很多的话,用这个方法名会很长。) public interface UserR...
  • Hive插入数据的几种常用方法

    万次阅读 2019-01-14 08:35:30
    Hive的几种常见的数据导入方式这里介绍四种:(1)、从本地文件系统中导入数据到Hive表;(2)、从HDFS上导入数据到Hive表;(3)、从别的表中查询出相应的数据并导入到Hive表中;(4)、在创建表的时候通过从别的表...
  • sql优化的几种方式

    万次阅读 多人点赞 2018-11-05 10:20:46
    我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务...
  • Hibernate查询数据的几种方式:

    千次阅读 2015-12-26 11:49:25
    1.导航对象图查询:根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它getOrders().iterator()方法就可以导航到所有关联的Order对象,假如在关联级别使用了延迟加载检索策略,那么首次...
  • Android加载缩略图的几种方法

    千次阅读 2016-02-05 13:14:29
    Android加载缩略图的几种方法 通过MediaStore获取缩略图 让系统生成缩略图 BitmapFactory创建缩略图 ThumbnailUtils加载缩略图 采用框架加载缩略图
  • java调用webservice接口 几种方法

    万次阅读 多人点赞 2017-03-15 15:31:28
    G、调用查询方法,方法名从portType下的operation标签的name属性获取 package com.webservice.client; import com.webservice.jaxws.WeatherServiceImpl; import ...
  • Kotlin Thread 开启异步线程 的几种方法
  • windows 自动定时执行任务的几种实现方法 Windows自动定时执行任务,常见的方法有三种:Windows 任务计划程序Windows ServiceSQL Agent 的 Job 这三种方法大多数人都用过,我在这里只做一个比较简单的介绍和小结,...
  • C#web页面向后台传递数据很多方法,可以使用服务器控件,也可以使用ajax,本文介绍几种常用的方法方法 (1)使用服务器控件; (2)使用ajax+aspx; (3)使用ajax+ashx; (4)使用ajax+aspx静态方法。  ...
  • Yii 直接执行SQL语句的几种使用方法

    万次阅读 2015-09-17 16:30:54
    yii1.x中直接使用sql查询(非ActiveRecord方式)的个函数(execute/query/queryAll/queryRow/queryColumn/queryScalar)的简单使用方式。
  • 页面间传递数据的几种方法

    千次阅读 2017-06-09 09:09:00
    在页面间传递数据时,我们以下几种选择:  1、Query String   一个很常见的方法,Query String是URL中问号之后的那一部分。其优点在于它是轻量级的,不会给服务器带来任何负担。而它也几个缺点:传递的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 479,486
精华内容 191,794
关键字:

创建查询的方法有几种