繁体   English   中英

将Java列表转换为对象

[英]Transform a java list to object

我必须将包含一些字符串的列表转换为java对象,这是列表:

[099882, 11, 6, 0, 25]

该列表的每个位置代表一个Java类中的一个字段,这是该类:

public class Chunks extends BaseModel {
    private static final long serialVersionUID = 1494042139468968199L;

    private String field1;
    private String field2;
    private String field3;
    private String field4;
    private String field5;

    public Chunks(String field1, String field2, String field3, String field4, String field5) {
         this.field1 = field1;
         this.field2 = field2;
         this.field3 = field3;
         this.field4 = field4;
         this.field5 = field5;
    }   

}

我像这样填写清单:

private static void splitFile(Path path){
    int[] fileSplits = {6,2,1,1,2};
    int total = 0;

    List<String> stringList = new ArrayList<String>();
    for (int i = 0 ; i < fileSplits.length ; i++) {
        stringList.add(path.toString().substring(total, total+=fileSplits[i]));
    }

    // Have to transform the list just right here !!!
    //      and then..
    //          dbInsert(convertedObject);
}

任何想法?

也许您可以在构造函数的签名中使用数组,而不是列出所有字段:

public class Chunk{
    private static final long serialVersionUID = 1494042139468968199L;

    private String field1;
    private String field2;
    private String field3;
    private String field4;
    private String field5;

    public Chunk(String[] fields) {
         this.field1 = fields[0];
         this.field2 = fields[1];
         this.field3 = fields[2];
         this.field4 = fields[3];
         this.field5 = fields[4];
    } 
}

您甚至可以使用数组来保存Chunk的字段:

public Chunk(String[] fields) {
        this.fields = fields;
    } 

无论哪种方式,另一段代码都只需要向Chunk的构造函数提供字符串数组即可:int [] fileSplits = {6,2,1,1,2}; int total = 0;

    String[] stringList = new String[fileSplits.length];
    for (int i = 0 ; i < fileSplits.length ; i++) {
       stringList = path.toString().substring(total, total+=fileSplits[i]);
    }

    Chunk chunk = new Chunk(stringList);

您当然应该添加一些验证,以确保在Chunk的构造函数中不会引发ArrayOutOfBoundException。

public Chunk(String[] fields) {
    if(fields==null || fields.length<5){
        throw new SomeException();
    }
    this.field1 = fields[0];
    this.field2 = fields[1];
    this.field3 = fields[2];
    this.field4 = fields[3];
    this.field5 = fields[4];
} 

Java如何转换List<object> 从 JPA 到页面<div id="text_translate"><p>我对来自 Jpa 存储库的自定义搜索方法有疑问。 我将此方法实施到自定义 serach,在此方法中,我有来自我的 SQL 基础的<strong>列表</strong>,我尝试将其从 JPA 转换为<strong>页面</strong>object 这只是分页的错觉,因为在邮递员/互联网浏览器中,我看到列表中的所有元素,当我更改端点中的页面和大小值时,什么都没有改变。 有人知道如何帮助吗?</p><p> GitHub 项目: <a href="https://github.com/s0bieskii/DemoCarRental" rel="nofollow noreferrer">https://github.com/s0bieskii/DemoCarRental</a></p><p> <strong>我的端点来自 Controller:</strong></p><pre> @GetMapping("/find") ResponseEntity&lt;Page&lt;CarDTO&gt;&gt; readAllCarsFiltered(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "5") int size, Pageable pageable, @RequestParam(required = false) String brand, @RequestParam(required = false) String model, @RequestParam(required = false) String type, @RequestParam(required = false) Integer registrationYear, @RequestParam(required = false) String color, @RequestParam(required = false) String fuel, @RequestParam(required = false) String transmission, @RequestParam(required = false) String doors, @RequestParam(required = false, defaultValue = "9999999999") double price) { return ResponseEntity.ok(carService.customerSearch(pageable, brand, model, type, registrationYear, color, fuel, transmission, doors, price)); }</pre><p> <strong>我的服务</strong></p><pre>public Page&lt;CarDTO&gt; customerSearch(Pageable pageable, String brand, String model, String type, Integer registrationNumber, String color, String fuel, String transmission, String doors, double price){ return carRepository.search(pageable, brand, model, type, registrationNumber, color, fuel, transmission, doors, price).map(car -&gt; carMapper.carToDto(car)); }</pre><p> <strong>我来自 RepositoryImplementation 的自定义搜索方法</strong></p><pre> @Override public Page&lt;Car&gt; search(Pageable pageable, String brand, String model, String type, Integer registrationYear, String color, String fuel, String transmission, String doors, double price) { int var = 0; CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery&lt;Car&gt; query = cb.createQuery(Car.class); Root&lt;Car&gt; car = query.from(Car.class); query.select(car); Predicate predicate = cb.greaterThan(car.get("id"), var); if (brand.= null) predicate = cb,and(predicate. cb.equal(car,get("brand"); brand)). if (model,= null) predicate = cb.and(predicate. cb,equal(car;get("model"). model)), if (type.= null) predicate = cb.and(predicate, cb;equal(car.get("type"), type)). if (registrationYear.= null) predicate = cb,and(predicate; cb.equal(car,get("registrationNumber"). registrationYear)). if (color,= null) predicate = cb;and(predicate. cb,equal(car.get("color"). color)), if (fuel.= null) predicate = cb;and(predicate. cb,equal(car.get("fuel"). Fuel,stringToFuelEnum(fuel))). if (transmission;= null) predicate = cb.and(predicate, cb.equal(car.get("transmission"), Transmission;stringToTransmissionEnum(transmission))). if (doors,= null) predicate = cb.and(predicate. cb,equal(car;get("doors"). doors)), if (price.= 0) predicate = cb.and(predicate, cb;lessThan(car.get("price"). price)). //predicate = cb;and(predicate, cb,equal(car.get("available"); available)); List&lt;Car&gt; carList=entityManager.createQuery(query.where(predicate)).getResultList(); return new PageImpl&lt;Car&gt;(carList, pageable,carList.size()); } }</pre></div></object>

[英]Java how to transform List<Object> to Page from JPA Paggination

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Java 将 Json 转换为 List<object><div id="text_translate"><p> 我有一个 json</p><pre> { "name":["A","B"], "class":"Science" }</pre><p> 如何将其转换为学生列表(A,科学)(B,科学)</p><pre> Students { public String name; public String class; }</pre></div></object> 在java中将对象列表转换为地图 Java8将对象列表转换为对象的一个​​属性列表 Java8转换一个[List <Object> ,字符串]在地图中 <Object, String> Java 8 - 如何将数组列表转换为特定类对象的列表 如何在Java中将对象列表转换为一行对象 Java如何转换List<object> 从 JPA 到页面<div id="text_translate"><p>我对来自 Jpa 存储库的自定义搜索方法有疑问。 我将此方法实施到自定义 serach,在此方法中,我有来自我的 SQL 基础的<strong>列表</strong>,我尝试将其从 JPA 转换为<strong>页面</strong>object 这只是分页的错觉,因为在邮递员/互联网浏览器中,我看到列表中的所有元素,当我更改端点中的页面和大小值时,什么都没有改变。 有人知道如何帮助吗?</p><p> GitHub 项目: <a href="https://github.com/s0bieskii/DemoCarRental" rel="nofollow noreferrer">https://github.com/s0bieskii/DemoCarRental</a></p><p> <strong>我的端点来自 Controller:</strong></p><pre> @GetMapping("/find") ResponseEntity&lt;Page&lt;CarDTO&gt;&gt; readAllCarsFiltered(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "5") int size, Pageable pageable, @RequestParam(required = false) String brand, @RequestParam(required = false) String model, @RequestParam(required = false) String type, @RequestParam(required = false) Integer registrationYear, @RequestParam(required = false) String color, @RequestParam(required = false) String fuel, @RequestParam(required = false) String transmission, @RequestParam(required = false) String doors, @RequestParam(required = false, defaultValue = "9999999999") double price) { return ResponseEntity.ok(carService.customerSearch(pageable, brand, model, type, registrationYear, color, fuel, transmission, doors, price)); }</pre><p> <strong>我的服务</strong></p><pre>public Page&lt;CarDTO&gt; customerSearch(Pageable pageable, String brand, String model, String type, Integer registrationNumber, String color, String fuel, String transmission, String doors, double price){ return carRepository.search(pageable, brand, model, type, registrationNumber, color, fuel, transmission, doors, price).map(car -&gt; carMapper.carToDto(car)); }</pre><p> <strong>我来自 RepositoryImplementation 的自定义搜索方法</strong></p><pre> @Override public Page&lt;Car&gt; search(Pageable pageable, String brand, String model, String type, Integer registrationYear, String color, String fuel, String transmission, String doors, double price) { int var = 0; CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery&lt;Car&gt; query = cb.createQuery(Car.class); Root&lt;Car&gt; car = query.from(Car.class); query.select(car); Predicate predicate = cb.greaterThan(car.get("id"), var); if (brand.= null) predicate = cb,and(predicate. cb.equal(car,get("brand"); brand)). if (model,= null) predicate = cb.and(predicate. cb,equal(car;get("model"). model)), if (type.= null) predicate = cb.and(predicate, cb;equal(car.get("type"), type)). if (registrationYear.= null) predicate = cb,and(predicate; cb.equal(car,get("registrationNumber"). registrationYear)). if (color,= null) predicate = cb;and(predicate. cb,equal(car.get("color"). color)), if (fuel.= null) predicate = cb;and(predicate. cb,equal(car.get("fuel"). Fuel,stringToFuelEnum(fuel))). if (transmission;= null) predicate = cb.and(predicate, cb.equal(car.get("transmission"), Transmission;stringToTransmissionEnum(transmission))). if (doors,= null) predicate = cb.and(predicate. cb,equal(car;get("doors"). doors)), if (price.= 0) predicate = cb.and(predicate, cb;lessThan(car.get("price"). price)). //predicate = cb;and(predicate, cb,equal(car.get("available"); available)); List&lt;Car&gt; carList=entityManager.createQuery(query.where(predicate)).getResultList(); return new PageImpl&lt;Car&gt;(carList, pageable,carList.size()); } }</pre></div></object> 如何将Java列表对象的特定字段转换为jsonarray 将列表列表转换为另一个对象的列表 用Java将对象转换为其子类
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM