前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JPA 中 sql 预编译 -- EntityManager 使用 预编译

JPA 中 sql 预编译 -- EntityManager 使用 预编译

作者头像
微风-- 轻许--
发布2022-04-13 15:27:43
7040
发布2022-04-13 15:27:43
举报
文章被收录于专栏:java 微风

实现方式 :

1. 注入em:

代码语言:javascript
复制
  @PersistenceContext
    private EntityManager entityManager;

注入方式 2:

代码语言:javascript
复制
  @PersistenceUnit
    private EntityManagerFactory emf;

2. 得到em:

代码语言:javascript
复制
 private EntityManager getEm() {
        return this.entityManager;
 }

对应第2种注入方式:

代码语言:javascript
复制
  /**
     * 得EntityManager
     *
     * @return
     */
    private EntityManager getEm() {
        return emf.createEntityManager();
    }

3.预编译写法:

代码语言:javascript
复制
   EntityManager em = getEm();
   String getAllTask = "SELECT ID,DEPARTMENT,WBS,CODE,NAME,PARENT_CODE FROM GAEI_WORK_TASK" +
                    " WHERE WBS = ? AND DEPARTMENT = ? ";
            Query query = em.createNativeQuery(getAllTask);
            query.setParameter(1, wbs);
            query.setParameter(2, ((Department) userService.getSecondDepartmentByUserId(uid)).getId());
            List<Object> taskList = query.getResultList();

4. 附上原本查询写法:( 建议参数都改为走预编译 )

代码语言:javascript
复制
 String sql = " SELECT" +
                    " pro.id," +
                    " pro.CODE," +
                    " pro.PROJECT_NAME," +
                    " pro.PROJECT_DIRECTOR_NO 'PROJECT_DIRECTOR_NO.id'," +
                    " pro.source," +
                    " gaei_pro.WBS," +
                    " app_user.fullname 'PROJECT_DIRECTOR_NO.fields'," +
                    " gaei_pro.STATUS" +
                    " FROM" +
                    " GAEI_PROJECT pro" +
                    " LEFT JOIN appbricks_user app_user ON gaei_pro.PROJECT_DIRECTOR_NO = app_user.id" +
                    " WHERE app_user.id = '" + approveId + "'" +
                    " ORDER BY pro.CODE ASC";

            List<Object> resultList = getResultList(em, sql);
代码语言:javascript
复制
 // 执行查询
    public static <T> List<T> getResultList(EntityManager em, String sql) {
        List<T> resultList = em.createNativeQuery(sql).getResultList();
        return resultList;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/05/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档