Hibernate Select Query To Select с двумя параметрами? - PullRequest
0 голосов
/ 06 марта 2019

HTML

<form class="login100-form validate-form" action="ActionController" method="post">
                    <span class="login100-form-title p-b-34">
                        Account Login
                    </span>

                    <div class="wrap-input100 rs1-wrap-input100 validate-input m-b-20" data-validate="Type Email Address">
                        <input class="input100" type="email" name="txtEmail" placeholder="User name">
                        <span class="focus-input100"></span>
                    </div>
                    <div class="wrap-input100 rs2-wrap-input100 validate-input m-b-20" data-validate="Type password">
                        <input class="input100" type="password" name="txtPassword" placeholder="Password">
                        <span class="focus-input100"></span>
                    </div>

                    <div class="container-login100-form-btn">
                        <input class="login100-form-btn" value="Signin" type="submit" name="action">
                    </div>

                    <div class="w-full text-center p-t-27 p-b-239">
                        <span class="txt1">
                            Forgot
                        </span>

                        <a href="forgetpass.jsp" class="txt2">
                         password?
                        </a>
                    </div>

                    <div class="w-full text-center">
                        <a href="SignUp.html" class="txt3">
                            Sign Up
                        </a>
                    </div>
                </form>

ActionController

else if(action.equalsIgnoreCase("signin"))
        {
            String email = request.getParameter("txtEmail");
            String pass = request.getParameter("txtPassword");

            UserDao udao = new UserDao();
            udao.UserLogin(email, pass);
            if(udao==null)
            {
                out.println("<script type=\"text/javascript\">");
                out.println("alert('Wrong Email Or Password');");
                out.println("</script>");

                response.sendRedirect("SignLog.html");
            }
            else {
                HttpSession session = request.getSession();
                session.setAttribute("uemail", email);
                request.getRequestDispatcher("index.html").forward(request, response);
            }

        }

Класс Дао

public UserBean UserLogin(String useremail, String password)
    {
        System.out.println("Enter Dao");

        Session session = SiteUtil.createSession();
        Transaction tr = session.beginTransaction();

        System.out.println("Query Processing");

        String sql_query = "FROM UserBean U WHERE U.email = :uemail AND U.password = :upassword";
        Query query = session.createQuery(sql_query);
        query.setParameter("uemail", useremail);
        query.setParameter("upassword", password);

        return (UserBean) query.uniqueResult();
    }

Даже если я введу неправильный адрес электронной почты и пароль, он будет перенаправлен на главную страницу.

Консоль
Обработка запросов Hibernate: Выбрать userbean0_.id as id1_0_, userbean0_.Email как Email2_0_, userbean0_.Password as Password3_0_ от регистрация пользователя userbean0_ где userbean0_.Email =? и userbean0_.Password =?

1 Ответ

0 голосов
/ 07 марта 2019

Из вашего кода:

String sql_query = "FROM UserBean U WHERE U.email = :uemail AND U.password = :upassword";
        Query query = session.createQuery(sql_query);
        query.setParameter("uemail", useremail);
        query.setParameter("upassword", password);

        return (UserBean) query.list();

Я думаю, что вы можете проверить размер query.list (), а также проверить некоторые данные после приведения в класс UserBean.

Ваш код будет выглядеть так:

UserBean userBean = (UserBean) query.list ();

Теперь вы можете проверить нулевое значение для некоторых данных из userBean

Обновление

Вы можете использовать приведенную ниже процедуру.

 import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.CrudRepository;

    /**
     * Created by skarim on 3/7/19.
     */
    public interface UserRepo extends CrudRepository<UserBean,Integer>{

        @Query("SELECT U FROM UserBean U WHERE U.email = ?1 AND U.password = ?2")
        UserBean findUserByEmailAndPassword(String email,String passWord);

    }

Здесь UserBean - ваш класс сущности.Предположим, у него есть поле id, email и пароль.

Ваш запрос выглядит так: SELECT U FROM UserBean U WHERE U.email = ?1 AND U.password = ?2

Здесь электронная почта является первым параметром, а пароль - вторым параметром в вашей функции findUserByEmailAndPassword

Теперь вы можете создать экземплярUserRepo и вызовите функцию findUserByEmailAndPassword с правильным значением.

@Autowired
UserRepo userRepo;
UserBean user=userRepo.findUserByEmailAndPassword("some@email.com","1234");

теперь у вас есть значение для пользователя.

Для получения дополнительной информации вы можете проверить эту ссылку эта ссылка

Надеюсь, это поможет вам.

Спасибо:)

...