2

【笔记】Hibernate通过原生SQL语句实现增删改查

 1 year ago
source link: https://loli.fj.cn/2023/03/17/Hibernate%E9%80%9A%E8%BF%87%E5%8E%9F%E7%94%9FSQL%E8%AF%AD%E5%8F%A5%E5%AE%9E%E7%8E%B0%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%A5/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【笔记】Hibernate通过原生SQL语句实现增删改查

2023-03-17

Hibernate通过原生SQL语句实现增删改查

String sql = "";
SQLQuery sqlQuery = session.createSQLQuery(sql);
int rows = sqlQuery.executeUpdate();

查询指定实体类的数据

  • 如果结果集是从单张表中查询的结果,那么可以直接通过映射到实体类的方式得到结果集
  • 在映射之前,需要创建自定义实体类(.java)和实体类与数据表的映射(.hbm.xml),并将实体类与数据表的映射配置添加到Hibernate配置中(hibernate.cfg.xml
List<User> results = null;
String sql = "";
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.addEntity(User.class);
results = sqlQuery.list();

自动映射任意数据类型为Map

  • 如果结果集是从多张表中查询的结果,那么可以通过手动获取结果拼接成Map集合
String sql = "SELECT COUNT(uid) FROM tbluser";
SQLQuery query = session.createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List<HashMap<String, Object>> result = query.list();
if (result.size() != 0) {
Object value = result.get(0).get("key");
}

手动查询任意类型数据

  • 如果结果集是从多张表中查询的结果,那么可以通过手动获取结果拼接成实体类
String sql = "";
SQLQuery sqlQuery = session.createSQLQuery(sql);
List<Object[]> objects = sqlQuery.list();
List<User> results = new ArrayList<>();
for (Object[] object : objects) {
User result = new User();
result.setId(String.valueOf(object[0]));
result.setName(String.valueOf(object[1]));
results.add(result);
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK