value="org.hibernate.dialect.MySQLDialect"/>
--Hibernate显示调试SQL-->
--Hibernate格式化sql-->
之后建立一个值对象,代码如下:
packagemangerTeam.vo;
importjava.io.Serializable;
importjava.util.Set;
importjavax.persistence.Basic;
importjavax.persistence.CascadeType;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.FetchType;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.JoinTable;
importjavax.persistence.Lob;
importjavax.persistence.ManyToMany;
importjavax.persistence.ManyToOne;
importjavax.persistence.Table;
/**
*运动员实体
*
*@author刘岩
*/
@Entity
@Table(name="player")
publicclassPlayersVOimplementsSerializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id",unique=true,nullable=false)
privateIntegerid;
@Column(name="name")
privateStringname;
@ManyToOne(optional=true,fetch=FetchType.LAZY)
@JoinColumn(name="teamId")
privateTeamVOteamVO;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(nullable=false,name="nationalityId")
privateNationalityVOnationalityVO;
@Lob
@Basic(fetch=FetchType.LAZY)
@Column(name="pic")
privatebyte[]pic;
@Lob
@Basic(fetch=FetchType.LAZY)
@Column(name="mess")
privateStringmess;
@ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.LAZY)
@JoinTable(name="plays_position",joinColumns={@JoinColumn(name="playerId")},inverseJoinColumns={@JoinColumn(name="positionId")})
privateSetpositions;
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicSetgetPositions(){
returnpositions;
}
publicvoidsetPositions(Setpositions){
this.positions=positions;
}
publicTeamVOgetTeamVO(){
returnteamVO;
}
publicvoidsetTeamVO(TeamVOteamVO){
this.teamVO=teamVO;
}
publicNationalityVOgetNationalityVO(){
returnnationalityVO;
}
publicvoidsetNationalityVO(NationalityVOnationalityVO){
this.nationalityVO=nationalityVO;
}
publicbyte[]getPic(){
returnpic;
}
publicvoidsetPic(byte[]pic){
this.pic=pic;
}
publicStringgetMess(){
returnmess;
}
publicvoidsetMess(Stringmess){
this.mess=mess;
}
}
之后写DAO,无论你是用IDE生成的DAO还是自己写的DAO,代码大致如下:
packagemangerTeam.dao;
importjava.util.HashMap;
importjava.util.List;
importjavax.persistence.EntityManager;
importjavax.persistence.PersistenceException;
importjavax.persistence.Query;
importmangerTeam.vo.PlayersVO;
importorg.springframework.context.ApplicationContext;
importorg.springframework.orm.jpa.JpaCallback;
importorg.springframework.orm.jpa.support.JpaDaoSupport;
importorg.springframework.transaction.annotation.Transactional;
@Transactional
publicclassPlayerDAOextendsJpaDaoSupportimplementsIPlayerDAO{
//propertyconstants
publicstaticfinalStringNAME="name";
publicstaticfinalStringMESS="mess";
publicstaticfinalStringPIC="pic";
publicvoidsave(PlayersVOentity){
logger.info("savingPlayerinstance");
try{
getJpaTemplate().persist(entity);
logger.info("savesuccessful");
}catch(RuntimeExceptionre){
logger.error("savefailed",re);
throwre;
}
}
publicvoiddelete(PlayersVOentity){
logger.info("deletingPlayerinstance");
try{
entity=getJpaTemplate().getReference(PlayersVO.class,
entity.getId());
getJpaTemplate().remove(entity);
logger.info("deletesuccessful");
}catch(RuntimeExceptionre){
logger.error("deletefailed",re);
throwre;
}
}
publicPlayersVOupdate(PlayersVOentity){
logger.info("updatingPlayerinstance");
try{
PlayersVOresult=getJpaTemplate().merge(entity);
logger.info("updatesuccessful");
returnresult;
}catch(RuntimeExceptionre){
logger.error("updatefailed",re);
throwre;
}
}
publicPlayersVOfindById(Integerid){
logger.info("findingPlayerinstancewithid:
"+id);
try{
PlayersVOinstance=getJpaTemplate().find(PlayersVO.class,id);
returninstance;
}catch(RuntimeExceptionre){
logger.error("findfailed",re);
throwre;
}
}
@SuppressWarnings("unchecked")
publicListfindByProperty(StringpropertyName,
finalObjectvalue,finalint...rowStartIdxAndCount){
logger.info("findingPlayerinstancewithproperty:
"+propertyName
+",value:
"+value);
try{
finalStringqueryString="selectmodelfromPlayersVOmodelwheremodel."
+propertyName+"=:
propertyValue";
returngetJpaTemplate().executeFind(newJpaCallback(){
publicObjectdoInJpa(EntityManagerem)
throwsPersistenceException{
Queryquery=em.createQuery(queryString);
query.setParameter("propertyValue",value);
if(rowStartIdxAndCount!
=null
&&rowStartIdxAndCount.length>0){
//有分页
introwStartIdx=Math.max(0,rowStartIdxAndCount[0]);
//开始页
if(rowStartIdx>