Java spring simply encapsulates its own DAO service implementation

Source: Internet
Author: User

Package Com.jade.basung.bss.module.common;import Com.jade.framework.base.criterion.criteria;import Com.jade.framework.base.util.paginglist;import com.jade.basung.bss.baseexception;/** * DAO Layer public interface * * @date 15/8/28 PM 5    : * @version 1.0 */public Interface Ibasedao<m extends java.io.Serializable, PK extends java.io.serializable>{ /** * Add Method-Generic * @param model Generic Object model * @throws Baseexception */void Add (M model) throws Baseexception    ; /** * Update Method-generic * @param model Generic Object model * @throws baseexception */void Update (M model) throws Baseexcept    Ion /** * Delete specified object-generic * @param model Generic Object model * @throws baseexception */void Delete (M model) throws Baseexce    ption; /** * Find specified object based on ID * @param model Generic object models * @param ID specified ID * @return Generic Object */M get (class<m> mod    EL, PK ID); /** * Find eligible information according to criteria * @param clazz class name * @param Criteria Object * @return */PAGINGLIST&L T M> ListalL (class<m> clazz, criteria);} 

Package Com.jade.basung.bss.module.common;import Com.jade.framework.base.criterion.criteria;import Com.jade.framework.base.util.paginglist;import com.jade.basung.bss.baseexception;/** * Data Management Layer Universal Interface * * @version 1.0 * @ Date 15/8/28 pm 5:24 */public Interface Ibasemanager<m extends java.io.Serializable, PK extends java.io.serializable& Gt {/** * Add Method-Generic * @param model Generic Object model * @throws Baseexception */void Add (M model) throws Baseexce    ption; /** * Update Method-generic * @param model Generic Object model * @throws baseexception */void Update (M model) throws Baseexcept    Ion /** * Delete specified object-generic * @param IDs to delete an object's ID, multiple * @throws baseexception */void Delete (Class<m> clazz Pk...    IDS) throws Baseexception; /** * Find specified object based on ID * @param model Generic object models * @param ID specified ID * @return Generic Object */M get (class<m> mod    EL, PK ID);     /** * Search for eligible information according to criteria * @param clazz class name * @param Criteria Object * @return*/paginglist<m> Listall (class<m> clazz, criteria);} 

Package Com.jade.basung.bss.module.common.impl;import Java.util.date;import Javax.inject.named;import Javax.persistence.entitymanager;import Javax.persistence.persistencecontext;import Javax.persistence.Query; Import Javax.persistence.temporaltype;import Com.jade.framework.base.criterion.criteria;import Com.jade.framework.base.criterion.sql.sqlutils;import Com.jade.framework.base.util.paginglist;import Com.jade.basung.bss.baseexception;import com.jade.basung.bss.module.common.ibasedao;/** * DAO Layer Common Interface implementation * * @date 15/8/ 28 pm 5:46 * @version 1.0 * * @Named ("Bss_basedao") public class Basedao<m extends Java.io.Serializable, PK extends java.io . Serializable> implements ibasedao<m,pk>{@PersistenceContext (unitname = "Default") Private Entitymanager E    Ntitymanager;    public void Add (M model) throws Baseexception {entitymanager.persist (model);    public void Update (M model) throws Baseexception {Entitymanager.merge (model); } public void Delete (M modEL) throws Baseexception {Entitymanager.remove (model);    Public M get (class<m> model,pk ID) {return entitymanager.find (model, ID); } public paginglist<m> Listall (class<m> clazz, criteria) {String sql = "Select" +clazz.        Getsimplename (). toLowerCase () + "from" +clazz.getsimplename () + "" +clazz.getsimplename (). toLowerCase () + "";    return sqlutils.sqlquery (SQL, Entitymanager, criteria); }/** * Execute insert,update,delete Batch statement failed to implement all-pending */protected int exectebulk (final String hql, final Object: .        paramlist) {Query query = entitymanager.createquery (HQL);        Setparameters (query, paramlist);        Object result = Query.executeupdate (); return result = = null?    0: ((Integer) result). Intvalue (); } protected int Exectenativebulk (final String natviesql, final Object ... paramlist) {Query query = Entitymanage        R.createnativequery (Natviesql);  Setparameters (query, paramlist);      Object result = Query.executeupdate (); return result = = null?    0: ((Integer) result). Intvalue ();  } protected void Setparameters (query query, object[] paramlist) {if (paramlist! = null) {for (int i = 0; i < paramlist.length; i++) {if (Paramlist[i] instanceof Date) {Query.setparameter (I, (Date) paramlist[i], Temp                Oraltype.timestamp);                } else {query.setparameter (i, paramlist[i]); }            }        }    }}

Package Com.jade.basung.bss.module.common.impl;import Javax.ejb.transactionattribute;import javax.inject.Named; Import Com.jade.framework.base.criterion.criteria;import Com.jade.framework.base.util.paginglist;import Com.jade.basung.bss.baseexception;import Com.jade.basung.bss.module.common.ibasedao;import Com.jade.basung.bss.module.common.ibasemanager;import org.springframework.transaction.annotation.Transactional /** * Universal Data Management Interface Implementation * * @date 15/8/28 PM 7:29 * @version 1.0 */@Named ("Bss_basemanager") public abstract class Basemanagerimpl <m extends Java.io.Serializable, PK extends java.io.serializable> implements ibasemanager<m,pk>{public IBa    Sedao<m, pk> Basedao;    public abstract void Setbasedao (Ibasedao<m, pk> Basedao);    @TransactionAttribute @Transactional (rollbackfor = exception.class) public void Add (M model) throws Baseexception    {Basedao.add (model); } @TransactionAttribute @Transactional (rollbackfor = exception.class) public void update (M model) throws Baseexception {basedao.update (model); } @TransactionAttribute @Transactional (rollbackfor = exception.class) public void Delete (class<m> clazz, P            K ... IDs) throws Baseexception {for (PK id:ids) {M model = Basedao.get (clazz, id);            if (model = null) {Basedao.delete (model);    }}} public M get (class<m> clazz,pk ID) {return basedao.get (clazz, id);  } public paginglist<m> Listall (class<m> clazz, criteria) {return Basedao.listall (Clazz,    criteria); }}

Encapsulates a common DAO service and then the corresponding DAO service business logic to inherit the common interface first

Here are the specific usage scenarios




Package Com.jade.basung.opration.collect;import com.jade.basung.bss.module.common.ibasedao;/** * Favorites Data Provider * * @date 15 /11/23 am 11:51 * @version 1.0 */public Interface Collectdao extends Ibasedao<collect, long>{}



Package Com.jade.basung.opration.collect.impl;import Javax.inject.named;import Javax.persistence.EntityManager; Import Javax.persistence.persistencecontext;import Com.jade.basung.bss.module.common.impl.basedao;import Com.jade.basung.opration.collect.collect;import com.jade.basung.opration.collect.collectdao;/** * Collection data access Interface implementation * * @ Date 15/11/23 pm 3:11 * @version 1.0 * * @Named ("Ld_collectdao") public class Jpacollectdao extends Basedao<collect, long& Gt Implements collectdao{    @PersistenceContext (unitname= "default")    private Entitymanager Entitymanager;}

Package Com.jade.basung.opration.collect;import Com.jade.basung.bss.baseexception;import Com.jade.basung.bss.module.common.ibasemanager;import com.jade.basung.opration.oprationexception;/** * Collection Admin Access interface * * @date 15/11/23 Morning 11:51 * @version 1.0 */public Interface Collectmanager extends Ibasemanager<collect, long>{    PU Blic void Addcollect (Collect Collect)            throws Oprationexception, baseexception;    public void Delcollect (Long ... IDs)            throws Oprationexception, Baseexception;}

Package Com.jade.basung.opration.collect.impl;import Javax.ejb.transactionattribute;import Javax.inject.Inject; Import Javax.inject.named;import Com.jade.basung.bss.baseexception;import Com.jade.basung.bss.module.common.ibasedao;import Com.jade.basung.bss.module.common.impl.basemanagerimpl;import Com.jade.basung.commodities.goods.goodsdao;import Com.jade.basung.opration.oprationexception;import Com.jade.basung.opration.collect.collect;import Com.jade.basung.opration.collect.collectdao;import Com.jade.basung.opration.collect.collectmanager;import Com.jade.basung.opration.collect.enum.collecttype;import Com.jade.basung.opration.comment.comment;import Com.jade.basung.opration.news.newsdao;import org.springframework.transaction.annotation.transactional;/** * Collection Admin Access interface Implementation * * @date 15/11/23 PM 3:09 * @version 1.0 */@Nam Ed ("Ld_collectmanager") public class Collectmanagerimpl extends Basemanagerimpl<collect, long> implements    collectmanager{private Collectdao Collectdao; Private GOODSDAO Goodsdao;    Private Newsdao Newsdao; @Override @Inject public void Setbasedao (@Named ("Ld_collectdao") Ibasedao<collect, long> Basedao) {This        . Basedao = Basedao;    This.collectdao = (Collectdao) Basedao;    } @Inject public void Setgoodsdao (@Named ("Ld_goodsdao") Goodsdao Goodsdao) {This.goodsdao = Goodsdao;    } @Inject public void Setnewsdao (@Named ("Ld_newsdao") Newsdao Newsdao) {This.newsdao = Newsdao; } @TransactionAttribute @Transactional (rollbackfor = exception.class) public void Addcollect (Collect Collect) th Rows Baseexception, oprationexception {collectdao.add (collect);//Add favorites if (Collecttype.goods = = Collect.        GetType ()) {Goodsdao.collectscount (Collect.getrelid (), 1);        } else if (collecttype.news = = Collect.gettype ()) {Newsdao.collectscount (Collect.getrelid (), 1); }} @TransactionAttribute @Transactional (rollbackfor = exception.class) Public VOID Delcollect (Long ... IDs) throws Oprationexception, Baseexception {for (long Id:ids) {Collect Co            Llect = Collectdao.get (collect.class, id);            if (null = = collect) {throw new Oprationexception ("Err.jade.operation.collect.collect_no_exist"); } if (Collecttype.goods = = Collect.gettype ()) {Goodsdao.collectscount (Collect.getrelid (),-            1);            } else if (collecttype.news = = Collect.gettype ()) {Newsdao.collectscount (Collect.getrelid (),-1);        } collectdao.delete (collect); }    }}



Spring Dependency Injection Inherits parent class interface subclass overriding parent class abstract method parent class reference to Child class object (interface parent class A=new subclass implementation B) then spring JPA @TransactionAttribute transaction rollback simple Bottom wrapper complete


My pro-Test is available (ps:--do not copy my code without brains, program coders should have their own ideas, not duplicate code production tools)

Java spring simply encapsulates its own DAO service implementation

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.