繁体   English   中英

java hibernate在xml文件中存储sql查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM