LINUX.ORG.RU

Как передать tinyint булевым параметром MVC ?


0

1

Имеем булевый параметр electromirrors объекта car представленый в бд mysql типом tinyint. Имеет бин Car

private boolean electromirrors;

public Car() {
    }

public boolean isElectromirrors() {
        return electromirrors;
    }

    public void setElectromirrors(boolean electromirrors) {
        this.electromirrors = electromirrors;
    }

Имеем контроллер

private void fillCarList() {
        try(Connection conn = Database.getConnection();
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from cars order by insertTime");) {
                
            while(rs.next()){
                Car car = new Car();
                car.setElectromirrors(rs.getBoolean("electromirrors"));
                //аналогично остальное представление
            }
            
        } catch (Exception e) {
        }

Такое представление car.setElectromirrors(rs.getBoolean(«electromirrors»)); будет работать если в поле electromirrors значения 0 или 1, или только через varchar true false значения нужно?


наверно надо смотреть драйвер твоей базы данных, не? мы так поняли, что у неё нет своего булевского типа.

anonymous
()
Ответ на: комментарий от anonymous

private boolean electromirrors; несовместимость типов boolean int, если сделать как Вы говорите все значения будут иметь значения false. Можно в бд сделать varchar true/false, но интересно будет ли работать вариант tinyint 0/1.

Andreu
() автор топика
Ответ на: комментарий от anonymous

Я так полагаю, getInteger возвращает Integer, а не int, а для Integer сравнение с помощью == означает сравнение со ссылкой. Надо так:

rs.getInteger("electromirrors")  != null && rs.getInteger("electromirrors").equals(1)
anonymous
()
Ответ на: комментарий от anonymous
car.setElectromirrors(rs.getBoolean("electromirrors"));

Эта строка передает значения electromirrors из базы данных присваивая их объекту car, правда тут нет списка правильне так

private void fillCarList() {
        public ArrayList<Car> cars;
        try(Connection conn = Database.getConnection();
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from cars order by insertTime");) {
            
            cars = new ArrayList<Car>();
    
            while(rs.next()){
                Car car = new Car();
                car.setElectromirrors(rs.getBoolean("electromirrors"));
                //аналогично остальное представление
            cars.add(car);
            }
            
        } catch (Exception e) {
        }

вопрос: если передаваемые значения 0 или 1, то будут ли они преобразовываться в true/false?

Andreu
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.