2017-04-03 88 views
0

我想放在XML file.I所有SQL查詢正在使用Spring引導和原生sql語句Java的休眠存儲SQL查詢XML文件中

冬眠

有人可以給我提供的例子,如何加載和得到查詢在Spring啓動和休眠時從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> 

下面是Java Hibernate代碼不動,SQL爲xml file.I需要移動sql語句到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代碼?

回答

0

爲什麼只使用命名查詢:

<sql-query name="getUsersById"> 
    <return alias="user" class="your class"/> 
    <![CDATA[ Select * From User 
     Where id =?]]> 
</sql-query>