精华内容
下载资源
问答
  • 主要介绍了Java中mybatis中关于example类的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Django 2 by example 博客项目–基础 Django 2 by example 博客项目–增加高级功能 Django 2 by example 博客项目–扩展功能 Django 2 by example 社交网站项目–用户身份验证 Django 2 by example 社交网站项目–-...
  • 最新的Django稳定版本,详细可用的代码
  • ROS Robotics by Example

    2017-07-26 15:31:30
    ROS Robotics by Example
  • Example一些常用写法

    千次阅读 2020-06-24 17:02:15
    Example的一些常用方法 1、 创建数据库 /* Navicat Premium Data Transfer Source Server : 192.168.1.100 Source Server Type : MySQL Source Server Version : 50621 Source Host : 192.168.1.100:3306 ...

    Example的一些常用方法

    1、 创建数据库

    /*
     Navicat Premium Data Transfer
    
     Source Server         : 192.168.1.100
     Source Server Type    : MySQL
     Source Server Version : 50621
     Source Host           : 192.168.1.100:3306
     Source Schema         : ag_admin_v6
    
     Target Server Type    : MySQL
     Target Server Version : 50621
     File Encoding         : 65001
    
     Date: 24/06/2020 16:18:58
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for upd_log
    -- ----------------------------
    DROP TABLE IF EXISTS `upd_log`;
    CREATE TABLE `upd_log`  (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '版本更新日志id',
      `version_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '版本号',
      `update_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '版本更新内容',
      `update_status` int(11) NULL DEFAULT NULL COMMENT '版本更新状态1:未更新。2.已经更新',
      `update_time` datetime(0) NULL DEFAULT NULL COMMENT '版本更新时间',
      `show_day` int(11) NULL DEFAULT NULL COMMENT '版本更新在首页展示天数',
      `del_status` int(11) NULL DEFAULT NULL COMMENT '删除状态.1:未删除。2.已经删除',
      `crt_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
      `crt_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人ID',
      `crt_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
      `crt_host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建IP',
      `upd_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
      `upd_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人ID',
      `upd_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
      `upd_host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新IP',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '更新的日志记录表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of upd_log
    -- ----------------------------
    INSERT INTO `upd_log` VALUES (1, '1.1.1', '版本更', 2, '2020-06-24 13:16:08', NULL, NULL, '2020-06-24 10:56:05', '1', '超级管理员', NULL, '2020-06-24 13:30:23', '1', '超级管理员', NULL);
    INSERT INTO `upd_log` VALUES (2, '1.1.2', '新版本更新', 1, NULL, NULL, NULL, '2020-06-24 13:31:15', '1', '超级管理员', NULL, '2020-06-24 13:31:58', '1', '超级管理员', NULL);
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    2、 生成的实体类

    package com.github.wxiaoqi.security.admin.entity;
    
    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.*;
    
    
    /**
     * 更新的日志记录表
     * 
     * @author qianlj
     * @email smallk13@163.com
     * @date 2020-06-23 18:20:26
     */
    @Table(name = "upd_log")
    public class UpdLog implements Serializable {
    	private static final long serialVersionUID = 1L;
    	
    	    //版本更新日志id
        @Id
        private Integer id;
    	
    	    //版本号
        @Column(name = "version_number")
        private String versionNumber;
    	
    	    //版本更新内容
        @Column(name = "update_content")
        private String updateContent;
    	
    	    //版本更新状态1:未更新。2.已经更新
        @Column(name = "update_status")
        private Integer updateStatus;
    	
    	    //版本更新时间
        @Column(name = "update_time")
        private Date updateTime;
    	
    	    //版本更新在首页展示天数
        @Column(name = "show_day")
        private Integer showDay;
    	
    	    //删除状态.1:未删除。2.已经删除
        @Column(name = "del_status")
        private Integer delStatus;
    	
    	    //创建时间
        @Column(name = "crt_time")
        private Date crtTime;
    	
    	    //创建人ID
        @Column(name = "crt_user")
        private String crtUser;
    	
    	    //创建人
        @Column(name = "crt_name")
        private String crtName;
    	
    	    //创建IP
        @Column(name = "crt_host")
        private String crtHost;
    	
    	    //更新时间
        @Column(name = "upd_time")
        private Date updTime;
    	
    	    //更新人ID
        @Column(name = "upd_user")
        private String updUser;
    	
    	    //更新人
        @Column(name = "upd_name")
        private String updName;
    	
    	    //更新IP
        @Column(name = "upd_host")
        private String updHost;
    	
    
    	/**
    	 * 设置:版本更新日志id
    	 */
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	/**
    	 * 获取:版本更新日志id
    	 */
    	public Integer getId() {
    		return id;
    	}
    	/**
    	 * 设置:版本号
    	 */
    	public void setVersionNumber(String versionNumber) {
    		this.versionNumber = versionNumber;
    	}
    	/**
    	 * 获取:版本号
    	 */
    	public String getVersionNumber() {
    		return versionNumber;
    	}
    	/**
    	 * 设置:版本更新内容
    	 */
    	public void setUpdateContent(String updateContent) {
    		this.updateContent = updateContent;
    	}
    	/**
    	 * 获取:版本更新内容
    	 */
    	public String getUpdateContent() {
    		return updateContent;
    	}
    	/**
    	 * 设置:版本更新状态1:未更新。2.已经更新
    	 */
    	public void setUpdateStatus(Integer updateStatus) {
    		this.updateStatus = updateStatus;
    	}
    	/**
    	 * 获取:版本更新状态1:未更新。2.已经更新
    	 */
    	public Integer getUpdateStatus() {
    		return updateStatus;
    	}
    	/**
    	 * 设置:版本更新时间
    	 */
    	public void setUpdateTime(Date updateTime) {
    		this.updateTime = updateTime;
    	}
    	/**
    	 * 获取:版本更新时间
    	 */
    	public Date getUpdateTime() {
    		return updateTime;
    	}
    	/**
    	 * 设置:版本更新在首页展示天数
    	 */
    	public void setShowDay(Integer showDay) {
    		this.showDay = showDay;
    	}
    	/**
    	 * 获取:版本更新在首页展示天数
    	 */
    	public Integer getShowDay() {
    		return showDay;
    	}
    	/**
    	 * 设置:删除状态.1:未删除。2.已经删除
    	 */
    	public void setDelStatus(Integer delStatus) {
    		this.delStatus = delStatus;
    	}
    	/**
    	 * 获取:删除状态.1:未删除。2.已经删除
    	 */
    	public Integer getDelStatus() {
    		return delStatus;
    	}
    	/**
    	 * 设置:创建时间
    	 */
    	public void setCrtTime(Date crtTime) {
    		this.crtTime = crtTime;
    	}
    	/**
    	 * 获取:创建时间
    	 */
    	public Date getCrtTime() {
    		return crtTime;
    	}
    	/**
    	 * 设置:创建人ID
    	 */
    	public void setCrtUser(String crtUser) {
    		this.crtUser = crtUser;
    	}
    	/**
    	 * 获取:创建人ID
    	 */
    	public String getCrtUser() {
    		return crtUser;
    	}
    	/**
    	 * 设置:创建人
    	 */
    	public void setCrtName(String crtName) {
    		this.crtName = crtName;
    	}
    	/**
    	 * 获取:创建人
    	 */
    	public String getCrtName() {
    		return crtName;
    	}
    	/**
    	 * 设置:创建IP
    	 */
    	public void setCrtHost(String crtHost) {
    		this.crtHost = crtHost;
    	}
    	/**
    	 * 获取:创建IP
    	 */
    	public String getCrtHost() {
    		return crtHost;
    	}
    	/**
    	 * 设置:更新时间
    	 */
    	public void setUpdTime(Date updTime) {
    		this.updTime = updTime;
    	}
    	/**
    	 * 获取:更新时间
    	 */
    	public Date getUpdTime() {
    		return updTime;
    	}
    	/**
    	 * 设置:更新人ID
    	 */
    	public void setUpdUser(String updUser) {
    		this.updUser = updUser;
    	}
    	/**
    	 * 获取:更新人ID
    	 */
    	public String getUpdUser() {
    		return updUser;
    	}
    	/**
    	 * 设置:更新人
    	 */
    	public void setUpdName(String updName) {
    		this.updName = updName;
    	}
    	/**
    	 * 获取:更新人
    	 */
    	public String getUpdName() {
    		return updName;
    	}
    	/**
    	 * 设置:更新IP
    	 */
    	public void setUpdHost(String updHost) {
    		this.updHost = updHost;
    	}
    	/**
    	 * 获取:更新IP
    	 */
    	public String getUpdHost() {
    		return updHost;
    	}
    }
    

    3、编写代码

    3.1、根据某个或者多个条件并且(AND)查询

    		Example example = new Example(UpdLog.class);
        	Criteria createCriteria = example.createCriteria();
        	createCriteria.andEqualTo("crtUser", 1);//设置用户id
        	createCriteria.andEqualTo("updateStatus", 1);//设置状态
        	List<UpdLog> updLogList = updLogMapper.selectByExample(example);
    

    相当于:select * from upd_log where crt_user = 1 and update_status = 1;

    3.2、根据某个条件不等于(!=)进行查询

    		Example example = new Example(UpdLog.class);
        	Criteria createCriteria = example.createCriteria();
        	createCriteria.andEqualTo("crtUser", 1);//设置用户id
        	createCriteria.andNotEqualTo("updateStatus", 1);//设置状态
        	List<UpdLog> updLogList = updLogMapper.selectByExample(example);
    

    相当于:select * from upd_log where crt_user = 1 and update_status != 1;

    3.3、根据多个条件或者(OR)进行查询

    		Example example = new Example(UpdLog.class);
        	Criteria createCriteria1 = example.createCriteria();
        	Criteria createCriteria2 = example.createCriteria();
        	Criteria createCriteria3 = example.createCriteria();
        	createCriteria1.andEqualTo("crtUser", 1);//设置创建用户id
        	createCriteria2.andEqualTo("updateStatus", 2);//设置状态
        	createCriteria3.andEqualTo("updUser", 1);//设置更新用户id
    
    		example.or(createCriteria2);
        	example.or(createCriteria3);
        	List<UpdLog> updLogList = updLogMapper.selectByExample(example);
    

    相当于:select * from upd_log where crt_user = 1 or update_status = 2 or upd_user = 2;

    3.4、排序

    		Example example = new Example(UpdLog.class);
        	Criteria createCriteria = example.createCriteria();
        	example.setOrderByClause("crt_time desc");//根据crt_time 升序。crt_time 要与数据库中字段名一致
        	createCriteria.andEqualTo("crtUser", 1);//设置创建用户id
        	List<UpdLog> updLogList = updLogMapper.selectByExample(example);
    

    相当于:select * from upd_log where crt_user = 1 ORDER BY crt_time DESC;

    3.5、模糊查询

    		String str = "新";
    		Example example = new Example(UpdLog.class);
        	Criteria createCriteria = example.createCriteria();
        	createCriteria.andEqualTo("crtUser", 1);//设置创建用户id
        	createCriteria.andLike("updateContent", "%"+str+"%");
        	List<UpdLog> updLogList = updLogMapper.selectByExample(example);
    

    相当于:SELECT * FROM upd_log WHERE crt_user = 1 AND update_content LIKE “%新%”;

    展开全文
  • cuda by example中文版

    热门讨论 2014-02-25 12:37:42
    cuda 经典的书 很好的入门教程 建议学习gpu的可以看看
  • 本想在网上找JPA Example的教程文章,发现仅仅只有一些对零散的对模糊查询的一些示例 所以学习了下spring的Example文档,做了以下总结及说明和简单示例,一些方法的使用自己摸索出来的(都有过测试) 肯定有不足之处...

    前言:

    本想在网上找JPA Example的教程文章,发现仅仅只有一些对零散的对模糊查询的一些示例

    所以学习了下spring的Example文档,做了以下总结及说明和简单示例,一些方法的使用自己摸索出来的(都有过测试)

    肯定有不足之处,望各位大神指出

    spring官方文档

    Interface ExampleMatcher

    示例

    嵌套类(内部类)

    方法

    • getIgnoredPaths()
      • 返回所有设置忽略匹配 withIgonrePaths(String… ignorePaths) 的字段集合
      • 类型:Set
    • getMatchMode()
      • 返回匹配模式
        • ANY
        • ALL
      • 类型:ExampleMatcher.MatchMode
    • getNullHandler()
      • 获取一个空处理的ExampleMatcher
      • 类型:ExampleMatcher.NullHandler

    以下返回boolean

    • isAllMatching()
      • 判断匹配模式受否为matchingAll()模式
    • isAnyMatching()
      • 判断匹配模式受否为matchingAny()模式
    • isIgnoreCaseEnabled()
      • 判断是否开启了忽略大小写模式
    • isIgnoredPath(String path)
      • 对一个字段判断是否是设置了忽略匹配模式;也就是设置了 withIgonrePaths(String… ignorePaths) 的字段

    以下都是返回ExampleMatcher对象(链式调用)

    • getDefaultStringMatcher()

      • 返回默认的ExampleMatcher对象
    • matching()

      • 返回一个匹配所有字段的ExampleMatcher对象;源码调用的是matchingAll()方法

      • 源码

        static ExampleMatcher matching() {
            return matchingAll();
        }
        
      • 示例

        ExampleMatcher exampleMatcher = ExampleMatcher.matching()
            .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
            .withIgnorePaths("password");
        Example<User> of = Example.of(user, exampleMatcher);
        List<User> all = userRepository.findAll(of);
        
    • matchingAll()

      • 如上:返回一个匹配所有字段的ExampleMatcher对象;
    • matchingAny()

      • 对任意一个字段进行匹配

      • 示例:使用起来和matching()并无区别

        ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
            .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
            .withIgnorePaths("password");
        Example<User> of = Example.of(user, exampleMatcher);
        List<User> all = userRepository.findAll(of);
        
    • withIgnoreCase(boolean defaultIgnoreCase)

      • 返回一个默认的ExampleMatcher

        • 默认是忽略大小写的
        ExampleMatcher.matching().withIgnoreCase(true);
        
      • 源码

        public ExampleMatcher withIgnoreCase(boolean defaultIgnoreCase) {
            return new TypedExampleMatcher(nullHandler, defaultStringMatcher, propertySpecifiers, ignoredPaths,
                                           defaultIgnoreCase, mode);
        }
        
    • withIgnoreCase(String… propertyPaths)

      • 对一个或多个字段设置忽略大小写

        ExampleMatcher.matching().withIgnoreCase("username");
        
    • withIgonrePaths(String… ignorePaths)

      • 对一个或多个字段设置,则此字段不受其它匹配影响,也就是说其他任何匹配模式不对这个字段生效

      • 如:不管设置了什么匹配模式,都不会对password字段生效

        ExampleMatcher exampleMatcher = ExampleMatcher.matching()
            .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
            .withIgnorePaths("password");
        
    • withIgnoreNullValues

      • 返回一个对被忽略字段 Null空值处理的ExampleMatcher对象
    • withIncludeNullValues()

      • 返回一个对字段 Null空值处理的ExampleMatcher对象
    • withMatcher(String propertyPath, ExampleMatcher.GenericPropertyMatcher gennericPropertyMatcher)

      • propertyPath 字段名
      • gennericPropertyMatcher 匹配规则
    • withStringMatcher(ExampleMatcher.StringMatcher defaultStringMatcher)

      • 如:返回一个匹配开始的字符串的ExampleMatcher

      • ExampleMatcher stringMatcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.STARTING);
        
    • withTransformer(String propertyPath, ExampleMatcher.PropertyValueTransformer propertyValueTransformer)

      • propertyPath:字段名
      • propertyValueTransformer:转换规则
      ExampleMatcher username = ExampleMatcher.matching().withTransformer("username", o -> Optional.of("jpa-1"));
      

      与如下效果一致

      ExampleMatcher.GenericPropertyMatcher transform = new ExampleMatcher.GenericPropertyMatcher().transform(o -> Optional.of("jpa-1"));
      ExampleMatcher.matching().withMatcher("username",transform)
      

    public static class ExampleMatcher.GenericPropertyMatcher

    注:返回值都是ExampleMatcher.GenericPropertyMatcher

    • contains() 模糊包含匹配;
    User user = new User();
    user.setUsername("test");
    ExampleMatcher exampleMatcher = ExampleMatcher.matching()
        .withMatcher("username", 
    //对username字段进行包含模式匹配
    ExampleMatcher.GenericPropertyMatcher::contains)	
        //不对password字段进行任何处理
        .withIgnorePaths("password");
    Example<User> of = Example.of(user, exampleMatcher);
    List<User> all = userRepository.findAll(of);
    System.out.println(all);
    
    • endsWith() 后缀模糊匹配

      • 以上都是用::方法引用
      • 这次用new 对象的方式来创建ExampleMatcher
      //对字段结尾模糊批匹配
      ExampleMatcher.GenericPropertyMatcher endsWith = new ExampleMatcher.GenericPropertyMatcher().endsWith();
      ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
          .withMatcher("username", endsWith)
          .withIgnoreCase("username")
          .withIgnorePaths("password");
      

    以下用法和上面都一样,只是匹配模式不同而已

    • exact() 精确匹配

    • ignoreCase(boolean ignoreCase)

      • 设置忽略大小写为 true;也就是忽略大小写
    • caseSensitive()

      • 设置忽略大小写为 false;也就是不忽略大小写
    • startsWith()

      • 对开头的字符串模糊匹配
    • storeDefaultMatching()

      • 默认匹配模式
    • regex()

      • 将字符串视为正则表达式模式进行匹配
    • of(ExampleMatcher.StringMatcher stringMatcher)

      • ExampleMatcher.StringMatcher提供了如下枚举

        • CONTAINING

          • 匹配包含的字符串
        • DEFAULT

          • 默认匹配模式
        • ENDING

          • 匹配结尾的字符串
        • EXACT

          • 匹配精确的字符串
        • REGEX

          • 将字符串视为正则表达式进行匹配
        • STARTING

          • 匹配开始的字符串
      • 示例

        ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
            //ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.STARTING))
            .withMatcher("username",ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.STARTING))
            .withIgnoreCase("username")
            .withIgnorePaths("password");
        
      ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.STARTING)
      
    • of(ExampleMatcher.StringMatcher stringMatcher, boolean ignoreCase)

      • 和上一个一样,只是多了一个boolean来指定忽略大小写

        ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.STARTING,false))
        
    • stringMatcher(ExampleMatcher.StringMatcher stringMatcher)

      • ExampleMatcher.StringMatcher提供了如下枚举

      • CONTAINING

        • 匹配包含的字符串
      • DEFAULT

        • 默认匹配模式
      • ENDING

        • 匹配结尾的字符串
      • EXACT

        • 匹配精确的字符串
      • REGEX

        • 将字符串视为正则表达式进行匹配
      • STARTING

        • 匹配开始的字符串
      • 示例

        //通过ExampleMatcher.StringMatcher.XXX定义匹配模式
        ExampleMatcher.StringMatcher defaultMode = ExampleMatcher.StringMatcher.DEFAULT;
        
        ExampleMatcher stringMatcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.STARTING);
        ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
                    .withMatcher("username",ExampleMatcher.GenericPropertyMatcher::startsWith)   
            		//将defaultMode传入
            		.withMatcher("username",ExampleMatcher.GenericPropertyMatcher.of(defaultMode,true))
                    .withMatcher("username", endsWith)
                    .withIgnoreCase("username")
                    .withIgnorePaths("password");
        
    • transform(ExampleMatcher.PropertyValueTransformer propertyValueTransforme)

      • 在查询之前对属性值进行转换

      • 示例:将传过来的参数test替换为jpa-1

        ExampleMatcher.GenericPropertyMatcher().transform(o -> Optional.of("jpa-1"));
        
      User user = new User();
      user.setUsername("test");
      
      ExampleMatcher.GenericPropertyMatcher transform = new ExampleMatcher.GenericPropertyMatcher().transform(o -> Optional.of("jpa-1"));
      
      ExampleMatcher exampleMatcher = ExampleMatcher.matching()
          .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
          .withMatcher("username", transform)
          .withIgnorePaths("password");
      
      Example<User> of = Example.of(user, exampleMatcher);
      List<User> all = userRepository.findAll(of);
      
      System.out.println(all);
      
      • 打印结果

        [User(id=7, username=jpa-1, password=123)]
        

        若没有使用替换

        结果为:

        [User(id=9, username=test, password=test)]
        
      • 注意:这里Optional.of(“jpa-1”)的jpa-1必须精确完整,且写了transform后 其它模糊匹配失效

    static class ExampleMatcher.GenericPropertyMatchers

    只定义了如下方法

    方法

    • caseSensitive()
      • 不忽略大小写
    • ignoreCase()
      • 忽略大小写
    • contains()
      • 匹配包含字符串
    • endsWith()
      • 匹配结尾字符串
    • exact()
      • 精确匹配字符串
    • reges()
      • 将字符串作为正则表达式进行匹配
    • startsWith()
      • 匹配结尾字符串
    • storeDefaultMatching()
      • 默认匹配模式

    使用和功能都和ExampleMatcher.GenericPropertyMatcher类的方法一样

    static interface ExampleMatcher.MatcherConfigurer<T>

    • 第一步
      写一个类实现ExampleMatcher.MatcherConfigurer<User>这个接口

      package com.live.model;
      import org.springframework.data.domain.ExampleMatcher;
      
      public class MyMatching implements ExampleMatcher.MatcherConfigurer<User> {
          @Override
          public void configureMatcher(User matcher) {
              matcher.setUsername("jpa");
          }
      }
      

      泛型为要操作的的Entity

      即:

        package com.live.model;
        
        import lombok.Data;
        
        import javax.persistence.*;
        
        @Entity
        @Table(name = "jpa_user")
        @Data
        public class User {
        
            @Id
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private Integer id;
            @Column(name = "jpa_username",length = 40)
            private String username;
            @Column(name = "jap_password")
            private String password;
        
        }
      
    • 第二步: 调用MyMatching

      User user = new User();
      user.setUsername("test");
      
      ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
          .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
          .withIgnorePaths("password");
      
      //调用我们自己实现MyMatching类的congifureMatcher方法,将user传入
      new MyMatching().configureMatcher(user);
      
      Example<User> of = Example.of(user,exampleMatcher);
      List<User> all = userRepository.findAll(of);
      System.out.println(all);
      
    • 结果

      • new MyMatching().configureMatcher(user)
      • 将user的username=“test"
      • 设置为了”jpa
      • 所以结果为
      [
          User(id=8, username=jpa-2, password=234),
          User(id=7, username=jpa-1, password=123),
          User(id=6, username=jpa-dead, password=123123123123), 
          User(id=5, username=jpa-result, password=12345)
      ]
      

    static class ExampleMatcher.MatchMode

    方法

    • static ExampleMatcher.MatchMode valueOf(String name)

      • 根据name返回匹配模式

      • 如:

        ExampleMatcher.MatchMode.valueOf("ANY")
        
    • static ExampleMatcher.MatchMode[] values()

      • 返回所有匹配模式

      • 如:

        ExampleMatcher.MatchMode[] values = ExampleMatcher.MatchMode.values();
        
      • 打印结果

        [ANY,ALL]
        

    static ExampleMatcher.NoOpPropertyValueTransofrmer

    方法

    • static ExampleMatcher.NoOpPropertyValueTransformer valueOf(String name)

      • 返回具有指定名称的此类型的枚举常量

      • 如:

        ExampleMatcher.NoOpPropertyValueTransformer instance = ExampleMatcher.NoOpPropertyValueTransformer.valueOf("INSTANCE");
        
    • static ExampleMatcher.NoOpPropertyValueTrasformer[] values()

      • 返回一个数组,该数组包含这个枚举类型的常量,按声明的顺序排列

        ExampleMatcher.NoOpPropertyValueTransformer[] values = ExampleMatcher.NoOpPropertyValueTransformer.values();
        
      • 打印结果:只有一个

        [INSTANCE]
        
    • Optional apply(Optional source)

      • 定义Function

        public class MyFunction implements Function<Optional<User>, User> {
            @Override
            public User apply(Optional<User> user) {
                User user1 = new User();
                user1.setUsername("apply-username");
                user1.setPassword("apply-password");
                user1.setId(200);
                return user1;
            }
        }
        
      • 通过ExampleMatcher.NoOpPropertyValueTransformer.valueOf(“INSTANCE”);获取 ExampleMatcher.NoOpPropertyValueTransformer

      • 再调用apply();进行消费

        instance.apply(Optional.ofNullable(new MyFunction().apply(Optional.of(user))));
        
        User user = new User();
        user.setUsername("test");
        
        ExampleMatcher.NoOpPropertyValueTransformer instance = ExampleMatcher.NoOpPropertyValueTransformer.valueOf("INSTANCE");
        
        Optional<Object> instance = instance.apply(Optional.ofNullable(new MyFunction().apply(Optional.of(user))));
        //通过get()将instance强转为User
        User o = (User) instance.get();
        
        System.out.println(o);
        
      • 打印结果

        User(id=200, username=apply-username, password=apply-password)
        

    ExampleMatcher.NullHandler

    方法

    • static ExampleMatcher.NullHandler valueOf(String name)
      • 根据参数name,返回一个NullHandler
      • name可写的有:
        • INCLUDE
        • IGNORE
    • static ExampleMatcher.NullHandler values()
      • 结果
        • [INCLUDE,IGNORE]

    static class ExampleMatcher.StringMatcher

    方法

    • static ExampleMatcher.StringMatcher valueOf(String name)
      • 根据参数name,返回对应的ExampleMatcher.StringMatcher
    • static ExampleMatcher.StringMatcher values()
      • 返回ExampleMatcher.StringMatcher[]数组

    枚举

    • CONTAINING
      • 匹配包含的字符串
    • DEFAULT
      • 默认匹配模式
    • ENGING
      • 匹配结尾的字符串
    • EXACT
      • 精确匹配字符串
    • REGEX
      • 将字符串作为正则表达式匹配
    • STARTING
      • 匹配开头的字符串

    使用

    ExampleMatcher exampleMatcher = ExampleMatcher.matching()
        //这个通过ExampleMatcher.GenericPropertyMatcher方法引用startWith来模糊匹配开头的字符串
        .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
        
        //这个通过ExampleMatcher.GenericPropertyMatcher.of()方法传入ExampleMatcher.StringMatcher.STARTING来模糊匹配开头的字符串
        .withMatcher("username", ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.STARTING))
        
        .withIgnorePaths("password");
    
    Example<User> example = Example.of(user);
    
    List<User> all = userRepository.findAll(example);
    

    示例

    Entity

    package com.live.model;
    
    import lombok.Data;
    
    import javax.persistence.*;
    
    @Entity
    @Table(name = "jpa_user")
    @Data
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        @Column(name = "jpa_username",length = 40)
        private String username;
        @Column(name = "jap_password")
        private String password;
    
    }
    

    数据库
    在这里插入图片描述

    根据前缀模糊查询

    • /findAllStartsWith/jpa
    @GetMapping("/findAllStartsWith/{username}")
    public List<User> findAllByUsername(@PathVariable(value = "username") String username) {
        User user = new User();
        user.setUsername(username);
        
        ExampleMatcher matching = ExampleMatcher.matching()
             //这个通过ExampleMatcher.GenericPropertyMatcher方法引用startWith来模糊匹配开头的字符串
        	.withMatcher("username", ExampleMatcher.GenericPropertyMatcher::startsWith)
       		 //这个通过ExampleMatcher.GenericPropertyMatcher.of()方法传入ExampleMatcher.StringMatcher.STARTING来模糊匹配开头的字符串
        	//.withMatcher("username", ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.STARTING))
            //不对password字段处理
            .withIgnorePaths("password");
        
        Example<User> example = Example.of(user, matching);
        
        return userRepository.findAll(example);
    }
    
    • 结果

      [
          User(id=8, username=jpa-2, password=234),
          User(id=7, username=jpa-1, password=123),
          User(id=6, username=jpa-dead, password=123123123123), 
          User(id=5, username=jpa-result, password=12345)
      ]
      

    根据后缀模糊查询

    • /findAllEndswith/dead

      @GetMapping("/findAllEndswith/{username}")
      public List<User> findAllByUsername(@PathVariable(value = "username") String username) {
          User user = new User();
          user.setUsername(username);
          
           //也可以将匹配模式单独写出来
          ExampleMatcher.GenericPropertyMatcher endsWith = new ExampleMatcher.GenericPropertyMatcher().endsWith();
          
          ExampleMatcher matching = ExampleMatcher.matching()
          	.withMatcher("username", endsWith)
              //不对password字段处理
              .withIgnorePaths("password");
          
          Example<User> example = Example.of(user, matching);
          
          return userRepository.findAll(example);
      }
      
    • 结果

      [
          User(id=6, username=jpa-dead, password=123123123123)
      ]
      

    根据包含模式查询

    • /findAllContains/e

      @GetMapping("/findAllContains/{username}")
      public List<User> findAllByUsername(@PathVariable(value = "username") String username) {
          User user = new User();
          user.setUsername(username);
          
          ExampleMatcher matching = ExampleMatcher.matching()
               //这个通过ExampleMatcher.GenericPropertyMatcher方法引用contains来匹配包含的字符串
          	.withMatcher("username", ExampleMatcher.GenericPropertyMatcher::contains)
         		 //这个通过ExampleMatcher.GenericPropertyMatcher.of()方法传入ExampleMatcher.StringMatcher.CONTAINING来匹配保安的字符串
          	//.withMatcher("username", ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.CONTAINING))
              //不对password字段处理
              .withIgnorePaths("password");
          
          Example<User> example = Example.of(user, matching);
          
          return userRepository.findAll(example);
      }
      
    • 结果

      [
      	User(id=6, username=jpa-dead, password=123123123123),
          User(id=5, username=jpa-result, password=12345), 
          User(id=9, username=test, password=test)
      ]
      

    在查询前更改属性值

    • /findOneTransform/jpa

      • 注意:Optional.of(“jpa-1”)的”jpa-1“必须精确完整,且是更改属性后,模糊查询失效
      @GetMapping("/findOneTransform/{username}")
      public List<User> findAllByUsername(@PathVariable(value = "username") String username) {
          User user = new User();
          user.setUsername(username);
          
          ExampleMatcher.GenericPropertyMatcher transform = new ExampleMatcher.GenericPropertyMatcher().transform(o -> Optional.of("jpa-1"));
          
          ExampleMatcher stringMatcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.STARTING);
          
          ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
              .withMatcher("username", stringMatcher)
              .withMatcher("username", transform)
              //对username字段忽略大小写
              .withIgnoreCase("username")
               //不对password字段处理
              .withIgnorePaths("password");
          new MyMatching().configureMatcher(user);
      
          Example<User> of = Example.of(user, exampleMatcher);
          List<User> all = userRepository.findAll(of);
          System.out.println(all);
      }
      
    • 结果

      [
          User(id=7, username=jpa-1, password=123)
      ]
      

    精确查询

    • /findOneExact/jpa-dead

      @GetMapping("/findOneExact/{username}")
      public List<User> findAllByUsername(@PathVariable(value = "username") String username) {
          User user = new User();
          user.setUsername(username);
          
          ExampleMatcher exampleMatcher = ExampleMatcher.matchingAny()
              .withMatcher("username", ExampleMatcher.GenericPropertyMatcher::exact)
              .withIgnorePaths("password");
          
          Example<User> of = Example.of(user,exampleMatcher);
          
          Optional<User> user = userRepository.findOne(of);
          System.out.println(user);
      }
      
    • 结果

      Optional[
          User(
              id=6, 
              username=jpa-dead, 
              password=123123123123
          )
      ]
      
    展开全文
  • swagger参数为list时example的显示问题

    千次阅读 2021-06-05 17:49:41
    场景:当参数为list等集合类型时,example的属性值如下: @ApiModelProperty(value = "集合", required = true, example = "[x,y,z]") private List<String> params; 页面显示的结果为: { "params": "[x,y,...

    场景:当参数为list等集合类型时,example的属性值如下:

    @ApiModelProperty(value = "集合", required = true, example = "[x,y,z]")
    private List<String> params;
    

    页面显示的结果为:

    {
      "params": "[x,y,z]"
    }
    

    而不是期待的:

    {
      "params": ["x", "y" , "z"]
    }
    

    下面对参数为list时example的显示问题进行探究。

    package com.morris.swagger.vo;
    
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    import java.util.List;
    
    @Data
    public class ListReq {
    
        @ApiModelProperty(dataType = "List", example = "'[''{''value1''}','{''value2''}'']")
        private List<String> aaa01;
    
        @ApiModelProperty(dataType = "List", allowableValues = "value1, value2", allowEmptyValue = false)
        private List<String> aaa02;
    
        @ApiModelProperty(dataType = "List", allowableValues = "value1, value2", allowEmptyValue = true)
        private List<String> aaa03;
    
        @ApiModelProperty(allowableValues = "value1, value2", allowEmptyValue = false)
        private List<String> aaa04;
    
        @ApiModelProperty(allowableValues = "value1, value2", allowEmptyValue = true)
        private List<String> aaa05;
    
        @ApiModelProperty(dataType = "List", example = "value1, value2, value2")
        private List<String> aaa06;
    
        @ApiModelProperty(dataType = "[Ljava.lang.String;", example = "value1, value2, value2")
        private List<String> aaa07;
    
        @ApiModelProperty(dataType = "[Ljava.lang.String;")
        private List<String> aaa08;
    
        @ApiModelProperty(dataType = "[Ljava.lang.String;", example = "'[''{''value1''}','{''value2''}'']")
        private List<String> aaa09;
    
        @ApiModelProperty(dataType = "[Ljava.lang.String;", allowableValues = "value1, value2", allowEmptyValue = false)
        private List<String> aaa10;
    
        @ApiModelProperty(dataType = "[Ljava.lang.String;", allowableValues = "value1, value2", allowEmptyValue = true)
        private List<String> aaa11;
    }
    

    运行后显示的结果如下:

    {
      "aaa01": "'[''{''value1''}','{''value2''}'']",
      "aaa02": {},
      "aaa03": {},
      "aaa04": [
        "string"
      ],
      "aaa05": [
        "string"
      ],
      "aaa06": "value1, value2, value2",
      "aaa07": "value1, value2, value2",
      "aaa08": [
        "string"
      ],
      "aaa09": "'[''{''value1''}','{''value2''}'']",
      "aaa10": [
        "string"
      ],
      "aaa11": [
        "string"
      ]
    }
    

    结论:ApiModelProperty doesn’t support example for arrays / Lists

    详见:https://github.com/swagger-api/swagger-core/issues/3863

    项目地址

    https://gitee.com/morris131/swagger-demo

    参考地址

    展开全文
  • TKmybatis的使用,MyBatis的Mapper接口、Example方法

    千次阅读 多人点赞 2020-11-28 23:13:00
    文章目录TKmybatis的使用TKmybatis的常用注解Mapper中的方法(dao继承可用)Example方法设置查询条件 TKmybatis的使用 pom.xml导入依赖 <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper --> &...

    TKmybatis的使用

    1. pom.xml导入依赖
            <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper</artifactId>
                <version>4.1.5</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>2.0.3</version>
            </dependency>
    
    

    【注意】如果在使用tkmybatis之前,你已经集成过mybatis,有mybatis的起步依赖mapper-spring-boot-starter,那么需要注释mybatis起步依赖,或者不添加tkmybatis的mapper-spring-boot-starter,否则会出报错**java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.ExampleProvider.<init>**

    1. 实体类的相关配置,@Id、@Table、@Column等

    TKmybatis的常用注解

    注解作用
    @Table指定该实体类对应的数据库表名 @Table(name = "tb_sy_company_info")
    @Id表示该字段对应数据库表的主键id
    @GeneratedValuestrategy表示使用数据库自带的主键生成策略,generator配置为"JDBC",在数据插入完毕之后,会自动将主键id填充到实体类中。
    @GeneratedValue(strategy = GenerationType.IDENTITY):主键自增
    @Column属性名和列名不一致进行匹配(数据库表以下划线,类属性是驼峰式)
    @Transient注解忽略作用,不与数据库表任何字段对应
    
    @Table(name = "tb_sy_company_info") //数据库的表
    @Data   //lombok 不用写get、set、tostring、构造方法等代码
    //供货商(公司)表
    public class Company {
        //@Id注解:主键
        //@GeneratedValue(strategy = GenerationType.IDENTITY):主键自增
        //@Column注解:属性名和列名不一致匹配
        //@Transient注解:忽略,不与数据库表任何字段对应
        @Id
        @Column(name = "company_id")
        private String companyId;               //主键(UUID),供应商名称
        @Column(name="company_name")
        private String companyName;             //供货商名称
        @Column(name = "company_contact")
        private String companyContact;          //供货商联系人
        @Column(name = "company_phone")
        private String companyPhone;            //供货商联系电话
        @Column(name = "company_address")
        private String companyAddress;          //供货商地址
        @Column(name = "company_email")
        private String companyEmail;            //供货商邮箱
        @Column(name = "business_license")
        private String businessLicense;         //营业执照照片地址(src)
        @Column(name = "representative_id")
        private String representativeId;        //法人代表身份证证件号
        @Column(name = "representative_name")
        private String representativeName;      //法人代表姓名
        private Integer weight;	                //权重(根据权重排名显示)
        @Column(name = "company_status")
        private Integer companyStatus;         //激活状态  0:停用,1:启用
        @Column(name = "company_size")
        private Integer companySize;           //供货商公司规模
        @Column(name = "create_time")
        private Date createTime;	            //创建时间(申请通过时间)
        @Column(name = "update_time")
        private Date updateTime;	            //最后更新时间
        private String remark;	                //备注(供货商的介绍信息)
    
        @Transient
        private boolean check;          //忽略,不与数据库表对应(判断是否选中)
    }
    
    
    1. dao层继承Mapper接口,dao extends Mapper<T>
    import tk.mybatis.mapper.entity.Example;
    public interface CompanyMapper extends Mapper<Company> {
        //update、delete、select、insert方法可以全部省略,由tkmybatis实现
    }
    

    Mapper中的方法(dao继承可用)

    Example example = new Example(JavaBean.class);
    
    方法功能说明
    String/Integer insert(Javabean bean) thorws SQLException整条插入数据(返回值为ID)
    int insertSelective(Javabean bean);有选择性的插入数据
    int deleteByPrimaryKey(Integer id) thorws SQLException按表的主键删除数据
    int deleteByExample(UserExample example) thorws SQLException指定条件删除
    long countByExample(UserExample example) thorws SQLException按条件查询满足条件的个数
    Object selectByPrimaryKey(Integer id) thorws SQLException主键查询,返回一个javabean对象
    List selectByExample(UserExample example) thorws SQLException按指定条件查询
    List selectByExampleWithBLOGs(UserExample example) thorws SQLException按指定条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生。
    int updateByPrimaryKey(Javabean bean) thorws SQLException按主键更新
    int updateByPrimaryKeySelective(Javabean bean) thorws SQLException主键更新值不为null的字段
    int updateByExample(Javabean bean, UserExample example) thorws SQLException条件更新example
    int updateByExampleSelective(Javabean bean, UserExample example) thorws SQLException条件更新值不为null的字段
    1. 在启动类Application上使用@MapperScan()扫描Mapper接口
    @SpringBootApplication
    @MapperScan(basePackages = "com.xgf.online_mall.system.mapper")     //扫描mapper包
    public class OnlineMallApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(OnlineMallApplication.class, args);
        }
    
    }
    
    1. application.properties配置文件配置数据库属性
    # 数据库配置
    spring:
      datasource: # hikari
        type: com.zaxxer.hikari.HikariDataSource  # 数据库类型,默认就是hikari(如果不改的话可以不写)
        driver-class-name: com.mysql.cj.jdbc.Driver # mysql 8 需要添加时区
        username: root
        password: 861221293
        url: jdbc:mysql://localhost:3306/onlinemall?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8  # serverTimezone=GMT%2B8表示东8区,不然报错time zone
    
    # mybatis配置
    mybatis:
      type-aliases-package: com.xgf.online_mall.system.domain # 别名
      mapper-locations: classpath*:com/xgf/online_mall/mapper/*.xml # use xml 使用xml配置的时候需要
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启mybatis日志
    
    1. Service调用
    @Service
    public class CompanyServiceImpl implements ICompanyService {
    
        @Autowired
        CompanyMapper companyMapper;
    
        @Override
        public List<Company> findAll() {
            Example example = new Example(Company.class);  //查询条件
            Example.Criteria criteria = example.createCriteria();
            //criteria.andEqualTo(company);  //根据值来拼接出where 条件
            //where by username=?
            //where by name=?
            List<Company> companyList = companyMapper.selectByExample(example);
            return companyList;
        }
    
        @Override
        public void saveCompany(Company company) {
            try {
                companyMapper.insert(company);  //添加
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }
    }
    
    

    Example方法设置查询条件

    example 用于添加条件,相当与sql语句中的where后面的条件部分。

    Example.Criteria criteria = example.createCriteria();
    

    【注意】

    1. 没写example.createCriteria();,然后执行selectByExample(example)会查询全部数据。
    2. example没加条件,执行查询语句selectByExample(example);也是查询全部。
    example方法,criteria方法说明
    example.setOrderByClause(“字段名 ASC”);添加升序(ASC)排列条件,DESC为降序。example.setOrderByClause("AFTER_CHECK_TIMEDESC");
    example.setDistinct(boolean b)去除重复,boolean类型,true:去重(无重复)
    criteria.andXxxIsNull添加字段xxx为null的条件
    criteria.andXxxIsNotNull添加字段xxx不为null的条件
    criteria.andXxxEqualTo(value)添加字段xxx等于value条件
    criteria.andXxxNotEqualTo(value)添加字段xxx不等于value条件
    criteria.andXxxGreaterThan(value)添加字段xxx大于value条件
    criteria.andXxxGreaterThanOrEqualTo(value)添加字段xxx大于等于value条件
    criteria.andXxxLessThan(value)添加字段xxx小于value条件
    criteria.andXxxLessThanOrEqualTo(value)添加字段xxx小于等于value条件
    criteria.andXxxIn(List<?>)添加字段xxx值在List<?>列表条件
    criteria.andXxxNotIn(List<?>)添加字段xxx值不在List<?>条件
    criteria.andXxxLike(“%”+value+”%”)添加字段xxx值为value的模糊查询条件
    criteria.andXxxNotLike(“%”+value+”%”)添加字段xxx值不为value的模糊查询条件
    criteria.andXxxBetween(value1,value2)添加字段xxx值在value1和value2之间条件
    criteria.andXxxNotBetween(value1,value2)添加字段xxx值不在value1和value2之间条件


    7. 创建测试类测试增加查询
    @SpringBootTest
    public class TestCompanyServiceImpl {
    
        @Autowired
        CompanyServiceImpl companyService;
    
        //测试添加
        @Test
        public void test01(){
            Company company = new Company();
            company.setCompanyId(UUID.randomUUID().toString());
            company.setCompanyName("供货商名称");
            company.setCompanyEmail("email邮箱");
            company.setCompanyContact("供货商联系人");
            company.setCompanyAddress("供货商地址");
            company.setBusinessLicense("c://"+company.getCompanyName()+"/"+"license.jpg");
            company.setRepresentativeId("123456789987654321");
            company.setWeight(2);
    
            companyService.saveCompany(company);    //保存数据
        }
    
    
        //测试查询所有数据
        @Test
        public void test02(){
            List<Company> companyServiceAll = companyService.findAll();
            System.out.println(companyServiceAll);
        }
    }
    
    1. 测试结果
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • MyBatis-18MyBatis代码生成器-Example讲解

    万次阅读 多人点赞 2018-04-29 03:57:57
    概述 示例 generatorConfig-country.xml 编写Java运行代码 运行获取自动生成的代码 ...编写单元测试了解Example的相关用法 selectByExample updateByExampleSelective deleteByExample+countByExample ...
  • Django By Example 无水印pdf 0分

    千次下载 热门讨论 2016-01-10 16:13:58
    Integrate other technologies into your application with clear, step-by-step explanations and comprehensive example code Who This Book Is For If you are a web developer who is completely new to or ...
  • tfrecord文件的写入非常简单,仍然用tfrecord格式的内容解析及样例中的例子,我们首先生成一个example value_city = u"北京".encode('utf-8') # 城市 value_use_day = 7 #最近7天打开淘宝次数 value..
  • OSG 各个Example介绍

    千次阅读 2018-09-18 14:23:26
    自己写了一半,发现多是废话,还是...1.example_osganimate 一)演示了路径动画的使用(AnimationPath、AnimationPathCallback),路径动画回调可以作用在Camera、CameraView、MatrixTransform、PositionAttitud...
  • java:mybatis:工具类example详解

    千次阅读 2019-12-19 18:34:24
    一、mapper接口中的方法解析 ... int countByExample(UserExample example) thorws SQLException 按条件计数 int deleteByPrimaryKey(Integer id) thorws SQLException 按主键删除 int delet...
  • django by example

    热门讨论 2016-01-18 21:20:36
    django by example,英语原版,带全部代码。epub,mobi,pdf三种格式。基于Python3.
  • -- Example:由Probe和ExampleMathcer组成,用于创建查询 使用示例查询的一些限制: -- 不支持嵌套或者分组 -- 不支持字符串的开始、包含、结束和正则表达式匹配 实例1 简单的查询示例 1.创建一个Probe(对象)...
  • Mybatis自动生成的Example类的使用与解析

    千次阅读 多人点赞 2020-01-08 10:35:22
    上篇文章中我有说过利用Mybatis自动生成的Example类可以满足我们90%甚至更多的SQL需求,简直不要太好用。废话不多说,直接先说它怎么用。 目录 一、使用 二、Example查询流程 一、使用 Example类中对每个字段都...
  • Example类用法example.createCriteria

    千次阅读 2020-06-19 18:06:49
    ###逆向工程的Example类用法==注意:【没写example.createCriteria();执行selectByExample(example)表示:查询全部】 qq_20597149 2017-11-27 11:40 1901 查看 =====####注意。example没加条件:没写example....
  • 一、mapper接口中的方法解析 ... int countByExample(UserExample example) thorws SQLException 按条件计数 int deleteByPrimaryKey(Integer id) thorws SQLException 按主键删除 int deleteByExa...
  • 通用Mapper Example类使用以及源码分析

    千次阅读 2019-06-11 17:41:17
    通用Mapper Example类源码分析 代码细节理解 1. criteria criteria 英 [kraɪ’tɪərɪə] 美 [kraɪ’tɪrɪə] n. 标准,条件(criterion的复数) 作者这里用 单词criteria 应该表达的是条件的意思,指sql ...
  • SELinux by Example Using Security Enhanced Linux

    千次下载 热门讨论 2014-02-21 21:43:27
    比较新的讲SELinux的入门书籍,包括MLS,是难得得覆盖面很全的书
  • MyBatis的Example类详解

    千次阅读 2019-07-29 12:19:39
    关于Example类的定义? mybatis-generator会为每个字段产生Criterion,为底层的mapper.xml创建动态sql。如果表的字段比较多,产生的example类会十分庞大。理论上通过example类可以构造你想到的任何筛选条件。在...
  • mybatis Example 使用方法

    千次阅读 2020-02-28 13:03:31
    一、mapper接口中的方法解析 ...int countByExample(UserExample example) thorws SQLException 按条件计数 int deleteByPrimaryKey(Integer id) thorws SQLException 按主键删除 int deleteByExample(UserEx...
  • 正样本(positive example )和负样本(negative example) 单独针对某个分类,与GT的IOU大于上门限的bbox是正样例,同理,与GT的IOU低于下门限bbox是负样例,在代码中可以将正样本理解为前景,负样本理解为背景,...
  •  为了高效地读取数据,可以将数据进行序列化存储,这样也便于网络... tf.Example类是一种将数据表示为{"string": value}形式的meassage类型,Tensorflow经常使用tf.Example来写入、读取TFRecord数据 1. 关于tf....
  • Mybatis Example的高级用法

    万次阅读 2019-04-12 17:33:22
    近几个项目一直使用的mybatis来对数据库做查询,期间用到了很多高效简洁的查询...int countByExample(UserExample example) 按条件计数 int deleteByPrimaryKey(Integer id) 按主键删除 int deleteByExample(U...
  • mybatis的Example[Criteria]的使用

    万次阅读 多人点赞 2019-01-15 11:39:36
    Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。 其他 Example类的distinct字段用于指定...
  • SpingDataJPA之ExampleMatcher实例查询

    万次阅读 热门讨论 2018-05-11 15:57:49
    ExampleMatcher是SpingData-JPA中好玩的一个东西 ExampleMatcher实例查询三要素 实体对象:在ORM框架中与Table对应的域对象,一个对象代表数据库表中的一条记录,如上例中User对象,对应user表。在构建查询条件...
  • Example.Criteria

    千次阅读 2019-07-15 13:06:33
    example实例解析 mybatis的逆向工程中会生成实例及实例对应的exampleexample用于添加条件,相当where后面的部分 xxxExample example = new xxxExample(); Criteria criteria = new Example().createCriteria(); ...
  • Postman之example

    千次阅读 2020-05-08 02:28:24
    目录前言example什么是example为什么使用example添加一个example 前言 本文章的内容抄录自郭宏志老师在CSDN发布的课程<<Postman接口测试>>, 由于这个视频没有提供课程笔记, 所以很尴尬的只能自己抄下来....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,918,522
精华内容 767,408
关键字:

example