I’m trying to find the best way to map my data on ORM. I have a query which gets me data from MySQL database which look like
x
SELECT d.ID AS Id, equipment.EQUIP_ID, equipment.EQUIP_REFERENCEFROM tbl_devices d INNER JOIN tbl_equipment equipment ON equipment.EQUIP_ID = d.DEV_ID What would be the most optimal way to get these data with Spring boot and Spring data??
Should I use @Query annotation and execute this or somehow create entities for Equipment and Devices tables and then use JPQL/HQL to join tables in a query, but then how should I map the result??
Thanks in advance.
Advertisement
Answer
You can use JdbcTemplate (import from org.springframework.jdbc.core.JdbcTemplate) to run the SQL statement above you wrote. After you can create a pojo to map result into it via BeanPropertyRowMapper. For example:
final String sql = "SELECT d.ID AS Id, equipment.EQUIP_ID, equipment.EQUIP_REFERENCE FROM tbl_devices d INNER JOIN tbl_equipment equipment ON equipment.EQUIP_ID = d.DEV_ID";YourPojo result = jdbcTemplate.query( sql, new BeanPropertyRowMapper<>(YourPojo.class)); Pojo class maybe like following:
@Datapublic class YourPojo { private Long id; private Long equipId; private Your_type equip_reference_name;}