巴巴运动网学习笔记(16-20)

1.ProductType的JPA映射

View Code
 1 @Entity
2 public class ProductType {
3 private int id;
4 private String name;
5 private String note;
6 private boolean visible = true;
7 private Set<ProductType> child;
8 private ProductType parent;
9
10 @Id @GeneratedValue(strategy = GenerationType.AUTO)
11 public int getId() {
12 return id;
13 }
14
15 public void setId(int id) {
16 this.id = id;
17 }
18 @Column(length=30,nullable=false)
19 public String getName() {
20 return name;
21 }
22
23 public void setName(String name) {
24 this.name = name;
25 }
26 @Column(length=100)
27 public String getNote() {
28 return note;
29 }
30
31 public void setNote(String note) {
32 this.note = note;
33 }
34 @Column(nullable=false)
35 public boolean isVisible() {
36 return visible;
37 }
38
39 public void setVisible(boolean visible) {
40 this.visible = visible;
41 }
42 @OneToMany(cascade={CascadeType.REFRESH,CascadeType.REMOVE},mappedBy="parent")
43 public Set<ProductType> getChild() {
44 return child;
45 }
46
47 public void setChild(Set<ProductType> child) {
48 this.child = child;
49 }
50 @ManyToOne(cascade=CascadeType.REFRESH) @JoinColumn(name="parentid")
51 public ProductType getParent() {
52 return parent;
53 }
54
55 public void setParent(ProductType parent) {
56 this.parent = parent;
57 }
58
59 }

2.实现ProductType的无限级分类

View Code
 1 @OneToMany(cascade={CascadeType.REFRESH,CascadeType.REMOVE},mappedBy="parent")
2 public Set<ProductType> getChild() {
3 return child;
4 }
5
6 public void setChild(Set<ProductType> child) {
7 this.child = child;
8 }
9 @ManyToOne(cascade=CascadeType.REFRESH) @JoinColumn(name="parentid")
10 public ProductType getParent() {
11 return parent;
12 }
13
14 public void setParent(ProductType parent) {
15 this.parent = parent;
16 }

3.实现ProductTypeService和ProductTypeServiceImpl

a.创建DAO接口,实现增删改查代码的服用

View Code
 1 package cnblogs.xiaoqiu.service.base;
2
3 public interface DAO {
4
5 /**
6 * 保存实体
7 * @param entity
8 */
9 public void save(Object entity);
10 /**
11 * 删除实体
12 * @param entity
13 */
14 public <T> void delete(Class<T> classType,Object entityId);
15 /**
16 *
17 * @param entitys 要删除的实体的ID数组
18 */
19 public <T> void delete(Class<T> classType,Object[] entitysId);
20 /**
21 * 更新实体
22 * @param entity
23 */
24 public void update(Object entity);
25 /**
26 * 查找实体
27 * @param <T>
28 * @param classType 实体的类型
29 * @param id 实体的ID
30 * @return
31 */
32 public <T> T find(Class<T> classType,Object id);
33 }

b.创建DAOSupport抽象类,为以后类实现DAO接口提供方便

View Code
 1 package cnblogs.xiaoqiu.service.base;
2
3 import javax.persistence.EntityManager;
4 import javax.persistence.PersistenceContext;
5
6 import org.springframework.stereotype.Service;
7 import org.springframework.transaction.annotation.Propagation;
8 import org.springframework.transaction.annotation.Transactional;
9
10 @Service @Transactional
11 public abstract class DAOSupport implements DAO {
12 @PersistenceContext protected EntityManager entityManager;
13
14 public <T> void delete(Class<T> classType,Object entityId) {
15 entityManager.remove(entityManager.getReference(classType, entityId));
16
17 }
18
19 public <T> void delete(Class<T> classType,Object[] entitysId) {
20 for(int i=0;i<entitysId.length;i++){
21 delete(classType, entitysId[i]);
22 }
23 }
24 @Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
25 public <T> T find(Class<T> classType, Object id) {
26 return entityManager.find(classType, id);
27 }
28
29 public void save(Object entity) {
30 entityManager.persist(entity);
31 }
32
33 public void update(Object entity) {
34 entityManager.merge(entity);
35 }
36
37 }

c.创建ProductTypeService接口

View Code
1 package cnblogs.xiaoqiu.service.product;
2
3 import cnblogs.xiaoqiu.service.base.DAO;
4
5 public interface ProductTypeService extends DAO{
6
7 }

d.创建ProductTypeServiceImpl类

package cnblogs.xiaoqiu.service.product.impl;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cnblogs.xiaoqiu.service.base.DAOSupport;
import cnblogs.xiaoqiu.service.product.ProductTypeService;

@Service @Transactional
public class ProductTypeServiceImpl extends DAOSupport implements ProductTypeService {
}

4.覆盖DAOSupport的delete方法

View Code
 1 package cnblogs.xiaoqiu.service.product.impl;
2
3 import org.springframework.stereotype.Service;
4 import org.springframework.transaction.annotation.Transactional;
5 import cnblogs.xiaoqiu.service.base.DAOSupport;
6 import cnblogs.xiaoqiu.service.product.ProductTypeService;
7
8 @Service @Transactional
9 public class ProductTypeServiceImpl extends DAOSupport implements ProductTypeService {
10
11 @Override
12 public <T> void delete(Class<T> classType, Object entityId) {
13 String jpql = "update ProductType p set p.visible=?1";
14 entityManager.createQuery(jpql).setParameter(1, false).executeUpdate();
15 }
16
17 }

5.测试ProductTypeServiceImpl

转载于:https://www.cnblogs.com/xiaoqv/archive/2012/03/25/2416831.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

批量生成 Gitee 仓库克隆命令的方法

当我们在一个新的公司入职或者发现一个很有意思的开源项目作者时&#xff0c;我们可能需要或者很想将该公司或作者的所有开源项目都克隆到本地慢慢研究。于是&#xff0c;笔者制作出了一段脚本可以一波将页面上的所有仓库生成克隆命令&#xff1a;var tmp []; $(.repository).…

Heartbeat+httpd+NFS 实现高可用的Web服务器

一、环境系统:CentOS 6.4x64位最小化安装nfs:192.168.3.31node1:192.168.3.32node2:192.168.3.33vip:192.168.3.34二、拓扑图三、前提条件1.节点之间主机名互相解析node1,node2:[rootheatbeat-node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost…

VS2005混合编译ARM汇编代码

2019独角兽企业重金招聘Python工程师标准>>> 在开发过程中&#xff0c;发现简单的在Storage Memory区域拷贝或粘贴文件不能达到硬件量测的要求&#xff0c;需要直接通过编写ARM汇编指令让CPU直接对Memory进行读写数据。 以前没有用VS2005编写过汇编代码&#xff0c;…

中国最险六大寺庙,最后一座至今无人登临

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;「风景线」佛教远离尘世的特性使得很多寺庙修建于偏僻险要的山野&#xff0c;看似岌岌可危的建筑&#xff0c;却能屹立千百年而不倒&#xff0c;这不得不感叹古人智慧的伟大&#xff0c;这6大险要寺庙&#xff0c;绝对能…

c/c++ code JSON

cJSON 初体验 cJSON是一个超轻巧&#xff0c;携带方便&#xff0c;单文件&#xff0c;简单的可以作为ANSI-C标准的JSON解析器。官网地址 cJSON.c /*Copyright (c) 2009 Dave GamblePermission is hereby granted, free of charge, to any person obtaining a copyof this softw…

Dapr牵手.NET学习笔记:发布-订阅

queue&#xff0c;是很好的削峰填谷工具&#xff0c;在业内也是主流&#xff1b;发布订阅&#xff0c;可以有效的解耦两个应用&#xff0c;所以dapr把他们进行了有效的封装&#xff0c;我们使用起来更简单高效。本篇的案例是下完订单后&#xff0c;会把消息发布到redis&#xf…

sql年月日24小时制_Power Query 抓取气象台24小时降水量数据

我们借鉴之前抓取台风路径数据的例子&#xff0c;试一试抓取降水量数据&#xff1a;之前我们访问过这个网站&#xff0c;也试着抓取过数据&#xff0c;不过在谷歌浏览器中我们只能够找到两天的数据&#xff0c;但是通过台风路径数据抓取&#xff0c;我们猜想只要我们向服务器提…

薅羊毛丨5个平价好物,终于终于终于打折了!

▲ 点击查看大家好&#xff0c;超模全新的固定栏目「薅羊毛」上线了&#xff01;既然是薅羊毛&#xff0c;怎么能空着手来&#xff1f;别看今天是草单&#xff0c;但所有产品都是咱们商务部小哥谈了好久才拿下的团购&#xff0c;而且全都包邮。毕竟好用的好吃的&#xff0c;啥都…

Docker小白到实战之Docker Compose在手,一键足矣

前言Docker可以将应用程序及环境很方便的以容器的形式启动&#xff0c;但当应用程序依赖的服务比较多&#xff0c;或是遇到一个大系统拆分的服务很多时&#xff0c;如果还一个一个的根据镜像启动容器&#xff0c;那就有点累人了&#xff0c;到这有很多小伙伴会说&#xff1a;弄…

Hsiaoyang:Google搜索结果页面分析

Hsiaoyang:Google搜索结果页面分析首先请参看Google官方的“搜索结果页”用户在使用搜索引擎的时候&#xff0c;首先会在搜索框中输入关键词&#xff0c;随后SE会返回一个搜索结果呈现给用户。SEO的主要对象是搜索引擎&#xff0c;而了解搜索引擎对搜索结果的展现对于SEO人员的…

泰国小哥又双叒叕整活,奇怪的美少女出现了......

最近“文艺复兴”又流行起来了&#xff0c;这一次遭殃的是80和90后的童年偶像——水兵月。在推特“重绘水兵月”的标签下&#xff0c;民间的绘画高手甚至业内的大佬&#xff0c;都以自己的画风&#xff0c;对下面这张出自《美少女战士》的截图进行重绘。下面让我们来欣赏网络上…

和套套一样,一次性橡胶手套制作现场, 这鬼畜的画风

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;普象工业设计小站ID&#xff1a;iamdesign如果说套套的制作过程很羞羞那同为乳胶制品的乳胶手套制作过程则可以用魔性甚至惊悚来说走进乳胶手套制作的工厂里迎面而来的是数不清的白色之手不停地在转啊转、甩啊甩这画面不…

Installing OpenCV 2.3.1 in Ubuntu

step1&#xff1a;下载 从http://sourceforge.net/projects/opencvlibrary 下载OpenCV源码&#xff0c;下载文件为OpenCV-2.3.1a.tar.bz2。 cd ~ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.1/OpenCV-2.3.1a.tar.bz2/download step2&#xff1a;…

Magicodes.IE 2.5.6.1发布

2.5.6.12021.10.06修复 #337&#xff0c;bool?类型导出的映射问题2.5.6.02021.10.05合并Magicodes.EPPlus到Magicodes.IE&#xff0c;修复所有单元测试并修复部分Bug对EPPlus进行了部分性能优化&#xff08;比如使用高性能内存流代替MemoryStream&#xff09;和功能加强2.5.5.…

OpenSSL--Window生成证书实战

为什么80%的码农都做不了架构师&#xff1f;>>> Windows下使用OpenSSL生成自签证书&#xff08;亲测&#xff09; 一&#xff0c;前言 经常写博客的小伙伴儿都知道&#xff0c;大家一般在前言里面会提到为什么写这篇博客&#xff0c;而我这篇博客 主要是探讨OpenSS…

7年赚的2个亿,数学家6年就花光了,全砸在自家的房子上

全世界只有3.14 % 的人关注了爆炸吧知识提到数学家&#xff0c;我以为是这样的&#xff1a;发际线不低&#xff0c;面部表情匮乏&#xff0c;总爱是写外星符号。然而却是这样的&#xff0c;刚刚还在讲sin、cos,一转头就掏出一把小提琴&#xff0c;超高难度的帕格尼尼随想曲说来…

iOS-Runtime知识点整理

本文目录 1.Runtime简介2.Runtime相关的头文件3.技术点和应用场景 3_1.获取属性\成员变量列表3_2.交换方法实现3_3.类\对象的关联对象,假属性3_4.动态添加方法&#xff0c;拦截未实现的方法3_5.动态创建一个类4.面试题-1.Runtime简介回到顶部1.Runtime简介 因为Objc是一门动态语…

人人年薪百万?醒醒!

今天刷知乎&#xff0c;看见一个很有趣的帖子&#xff1a;中青校媒的一份调查结果显示&#xff1a;67.65%的大学生评估自己10年内会年薪百万。这个帖子下面一堆答主在那疯狂的讽刺挖苦&#xff0c;觉得年轻人什么都不懂就会幻想。我倒是觉得年轻人对未来充满憧憬和希望反而是好…

sql not exists用法_SQL Server 2012 高级用法(一)

最近用到了SQL Server 相关数据库等问题&#xff0c;于是整理了如下SQL Server高级用法系列。该系列不再介绍基础用法(select ,insert, update, delete, and or ,order by 等)。本文将介绍高级用法&#xff1a;Top, Like,通配符。三种高级用法。TOP Top 子句用于规定要返回的记…

谈谈女友卸妆后的感受?

1 2 医生和她的实习助手3 那个&#xff0c;打针的话能不能轻点呀4 ok&#xff0c;学会了 图自青鲤5 有点甜~6 一个人可以无聊到什么程度&#xff1f;7 所谓的前翻乾坤无敌轮回抓鱼大法。。8 《请回答1988》中的珍珠饰演者金雪演唱插曲《惠化洞》&#xff08;来源于weibo&#x…