0%
前言
Hibernate通过原生SQL语句实现增删改查
增删改
1 2 3
| String sql = ""; SQLQuery sqlQuery = session.createSQLQuery(sql); int rows = sqlQuery.executeUpdate();
|
查
查询指定实体类的数据
- 如果结果集是从单张表中查询的结果,那么可以直接通过映射到实体类的方式得到结果集
- 在映射之前,需要创建自定义实体类(
.java
)和实体类与数据表的映射(.hbm.xml
),并将实体类与数据表的映射配置添加到Hibernate配置中(hibernate.cfg.xml
)
1 2 3 4 5
| List<User> results = null; String sql = ""; SQLQuery sqlQuery = session.createSQLQuery(sql); sqlQuery.addEntity(User.class); results = sqlQuery.list();
|
自动映射任意数据类型为Map
- 如果结果集是从多张表中查询的结果,那么可以通过手动获取结果拼接成Map集合
1 2 3 4 5 6 7
| 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"); }
|
手动查询任意类型数据
- 如果结果集是从多张表中查询的结果,那么可以通过手动获取结果拼接成实体类
1 2 3 4 5 6 7 8 9 10
| 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); }
|
完成