一、通过Hibernate执行自定义SQL语句
使用Hibernate封装过的get()方法获取数据库信息,往往无法灵活的设置查询条件以及排序、分页等操作。所以我们可以使用Hibernate直接调用SQL语句。
1.配置Spring和Hibernate的xml
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<!-- 可以加多个包 -->
<value>cn.edu.ncut.mfwork.entity</value>
<value>cn.edu.ncut.mfwork.view</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<!--<prop key="hibernate.hbm2ddl.auto">create</prop> -->
<!--<prop key="hibernate.hbm2ddl.auto">update</prop> -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">false</prop>
<prop key="hibernate.current_session_context_class">
org.springframework.orm.hibernate5.SpringSessionContext
</prop>
</props>
</property>
</bean>
2.获取Session
Session session = sessionFactory.getCurrentSession();
3.设置SQL语句,获取Query
String sql = "select * from tbl_user u where u.id = ?"; //设置自己的sql语句,条件语句可以更复杂
Query query = null;
query = session.createSQLQuery(sql).addEntity(SysUser.class); //返回实体类的方法
//query = session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //返回成map形式
query.setString(0, "1"); //设置通配符
4.执行SQL并返回List
List<SysUser> list = query.list();
更多推荐
Hibernate如何执行自定义SQL语句
发布评论