JPA-Oracle-Mysql连接数据库配置

    //...省略datasouce      
    <!--允许使用注解方式配置事务 -->  
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!--service端使用inject方式查询扫描 --> 
    <jpa:repositories base-package="cn.com.taiji.com.repository" />

     <!-- JPA 事务管理 --> 
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="dataSource" ref="dataSource" /> 
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <!-- JPA 实体管理工厂 --> 
    <bean id="entityManagerFactory"
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-oracle.xml" />
            <property name="jpaPropertyMap">
                <map>
                    <entry key="hibernate.hbm2ddl.auto" value="no" />
                    <entry key="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
                    <entry key="hibernate.show_sql" value="true" />
                    <entry key="hibernate.format_sql" value="false" />
                </map>
            </property>

    </bean>`
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!--service端使用inject方式查询扫描 --> 
    <jpa:repositories base-package="cn.com.taiji.com.repository" />

     <!-- JPA 事务管理 --> 
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="dataSource" ref="dataSource" /> 
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <!-- JPA 实体管理工厂 --> 
    <bean id="entityManagerFactory"
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-oracle.xml" />                
    </bean>

persistence-oracle.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
    version="2.1">

    <persistence-unit name="app" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <mapping-file>META-INF/orm-oracle.xml</mapping-file>
        <exclude-unlisted-classes/>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.max_fetch_depth" value="3" />
            <property name="hibernate.hbm2ddl.auto" value="no" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

orm-oracle.xml实体类映射文件

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm/orm_2_1.xsd">
    <entity class="cn.com.taiji.com.domain.ServiceMenu" /> 
</entity-mappings>

实体类

package cn.com.taiji.com.domain;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/** 
* @ClassName: ServiceMenu 
* @Description: 服务目录 
* @author ranxing 
* @date 2017年8月2日 下午2:59:57 
*  
*/
@Entity
@Table(name="rkrm$_ywfwinfo")
@NamedQuery(name="ServiceMenu.findAll", query="SELECT t FROM ServiceMenu t")
public class ServiceMenu implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -1332680945578333683L;




  public  ServiceMenu(){

  }
    @Id
    private         String      fwlxid ;
    private         String      fwlxname;
    private         String      fwloc;
    private         String      fwlxdesc;
    @Lob
    private         String      fwinfo;
    private         String      dwid;
    private         String      ywlxid;
    private         String      creator;
    private         String      ctime;
    private         String      fromfwlxid;
    public String getFwlxid() {
        return fwlxid;
    }
    public void setFwlxid(String fwlxid) {
        this.fwlxid = fwlxid;
    }
    public String getFwlxname() {
        return fwlxname;
    }
    public void setFwlxname(String fwlxname) {
        this.fwlxname = fwlxname;
    }
    public String getFwloc() {
        return fwloc;
    }
    public void setFwloc(String fwloc) {
        this.fwloc = fwloc;
    }
    public String getFwlxdesc() {
        return fwlxdesc;
    }
    public void setFwlxdesc(String fwlxdesc) {
        this.fwlxdesc = fwlxdesc;
    }
    public String getFwinfo() {
        return fwinfo;
    }
    public void setFwinfo(String fwinfo) {
        this.fwinfo = fwinfo;
    }
    public String getDwid() {
        return dwid;
    }
    public void setDwid(String dwid) {
        this.dwid = dwid;
    }
    public String getYwlxid() {
        return ywlxid;
    }
    public void setYwlxid(String ywlxid) {
        this.ywlxid = ywlxid;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public String getCtime() {
        return ctime;
    }
    public void setCtime(String ctime) {
        this.ctime = ctime;
    }
    public String getFromfwlxid() {
        return fromfwlxid;
    }
    public void setFromfwlxid(String fromfwlxid) {
        this.fromfwlxid = fromfwlxid;
    }
}

ServiceMenuRepository实体类相关连接数据库接口
一般我都习惯手写sql

package cn.com.taiji.com.repository;



import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;

import cn.com.taiji.com.domain.ServiceMenu;

@Transactional//这个注解很重要哦
public interface ServiceMenuRepository  extends 
            JpaRepository<ServiceMenu, String>,
            JpaSpecificationExecutor<ServiceMenu>,
            PagingAndSortingRepository<ServiceMenu,String>{

/*  弄几个栗子,并不是这个实体的方法
    /**
     * 查询出未删除的所有数据字典记录集合
     * @return
     */
    @Query("select c from Infolink c where c.deleteFlog=1 ") 
    List<Infolink> findAllInfolinks();

    //and b.infosort_id = ?1
    @Query(" select c from  Infolink c , InfosortInfolink b  where b.infolinkId = c.infolinkId and c.infolinkId = ?1 ") 
    List<Infolink> findLinkById(String infolinkId);

    //and b.infosort_id = ?1
    @Modifying
    @Query(" update Infolink c set c.deleteFlog = 0 where c.infolinkId= ?1 ")
    void updateFlag( String infolinkId);

*/



}

一个查询至于拼接过程看需求自己弄吧类似普通sql拼接

@PersistenceContext
    private EntityManager em;

    @Inject
    LogZJTaskInfoRepository logZJTaskInfoRepository;

    @Inject
    ServiceInfoRepository serviceInfoRepository;

//...以上省略  这个sql不是上面实体里面的只是例子,2个表的查询写法
// 大于2个表的方式,还不如使用级联就行了,当然我不会..
// length()是oracle中clob字段的非空
// 只要配置正确mysql和oracle是通用的,除了特殊字段需要自己处理,
// 正常的都一样查询,mysql会自己查询为limit,oracle会为ROWNUM
            StringBuilder jpql = new StringBuilder ("select  c from LogZJTaskInfo c , TimeInfo d   where c.zyid = d.zyid  "
                    + "and length(d.timeinfo)>0   ") ;

     Query query = em.createQuery(jpql.toString()); 
              query.setFirstResult(page*pageSize); // query
              query.setMaxResults(pageSize);
             // query.setParameter("appointPeopleId", searchParameters.get("userId"));  //登录人Id
              List list =  query.getResultList();
              map.put("List", list);
// 来个单一查询 通用方法传id就行
ServiceInfo si =    serviceInfoRepository.findOne((String) object);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值