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

来源:互联网 发布:nginx启动后的进程 编辑:程序博客网 时间:2024/05/23 12:57
    //...省略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);
原创粉丝点击