I’m using spring mvc and I created the CRUD functionality. But I want to create a search function that will allow me to find a user by any parameter (variable) as ‘userid’ or ‘username’ or ‘lastname’ or ‘social security number’ or whatever.
My userid is an integer type.
How can I do that? What is the SQL query for that?
How can I check if the input is integer or string and then go through the database by the given parameter and search for the user?
If you are using Hibernate for data access you can easily create universal finder using criteria API:
Abstract DAO class:
Concrete DAO class for entity:
Or if you prefer to use HQL instead of Criteria API you can rewrite search method as:
In this article you can find very good description how to create generic DAO with hibernate (Or if you prefer JPA there are also described how to do this with JPA).
Or if you prefer to use JDBC for data access I recommend you to look at Spring’s JdbcTemplate. It simplifies development a lot. Here how you can implement universal finder using JdbcTemplate:
Ass you can see in all examples you don’t need explicitly specify parameter type, you just add it as Object parameter.
If you will work with direct JDBC in such case I recommend you to use PreparedStatement and it’s setObject(..) method. Query text will be similar to shown in the example with JdbcTemplate.