[英]java hibernate storing sql queries in xml file
我试图将所有sql查询放在xml文件中。我正在使用Spring启动和hibernate与本机sqls
有人能为我提供如何在spring boot和hibernate中从xml文件加载和获取查询字符串的示例。
我在应用程序中使用基于java的配置。
配置文件如下所示:
@SpringBootApplication
@PropertySources({
@PropertySource(value = "classpath:application.properties")
})
@EnableAutoConfiguration`enter code here`
@Configuration
public class BootApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(BootApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(BootApplication.class, args);
}
@Bean
public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
return hemf.getSessionFactory();
}
}
xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<entry key="getUsersById">
<![CDATA[
Select * From User
Where id =?
]]>
</entry>
<entry key="getPersonBySSN">
<![CDATA[
]]>
</entry>
</properties>
下面是没有将sql移动到xml文件的Java hibernate代码。我需要将sqls移动到xml,因为应用程序中有很多查询。
public List<User> getUsers(String id) {
List<User> users = new ArrayList<User>();
try {
String sql = "Select * From User Where id =?";
SQLQuery query = getSession().createSQLQuery(sql);
query.setParameter(0, id); query.setResultTransformer(Transformers.aliasToBean(User.class))
users = (List<User>) query.list();
} catch (Exception e) {
logger.error("Error", e);
}
return users;
}
有人可以提供示例,将sql查询移动到xml文件并使用它的java代码吗?
为什么只使用命名查询:
<sql-query name="getUsersById">
<return alias="user" class="your class"/>
<![CDATA[ Select * From User
Where id =?]]>
</sql-query>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.