JPA 原生SQ查询

北慕城南 提交于 2019-12-29 23:55:34

参考文章

https://blog.csdn.net/coding_1994/article/details/84575943
https://blog.csdn.net/m0_37776094/article/details/78419669

import org.springframework.stereotype.Service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.persistence.Query;
import java.util.List;

@Service
public class GetCodeService {
    private EntityManagerFactory emf;

    @PersistenceUnit//使用这个标记来注入EntityManagerFactory
    public void setEntityManagerFactory(EntityManagerFactory emf) {
        this.emf = emf;
    }

    /**
     * @param 
     * @return
     */
    public String getCode(Integer type) {

        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        Query query = null;
        //定义SQL,可以多个表关联查询
        String sql = "SELECT getCode(?1)";


        //创建原生SQL查询QUERY实例
        query =  em.createNativeQuery(sql);
        query.setParameter(1,type);

        //执行查询,sql语句执行的查询结果只有一列时就会出现该问题!
        // 当有多个列时用数组取没有问题,如果只有一列会默认为string或者其他类型!
        List<String> result = query.getResultList();

        em.close();

        return  result.get(0).toString();
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!