智能销售系统(八)菜单/POI入门
2019-09-26 本文已影响0人
磨陀货_
一、菜单
要求一:获取数据库的数据(菜单)
要求二:相应的权限看到相应的(菜单)
1.1 思路
1.1.1 1.1+n条SQL
1.先发送一条SQL拿到所有父菜单
2.n就是子菜单的SQL
1.1.2 一条SQL查询
发送一条SQL拿到所有菜单
自己去写逻辑把结构拼接出来
1.2 第二种方式解决菜单
1.2.1 Menu创建
@Entity
@Table(name = "meun")
public class Menu extends BaseDomain{
private String name;
private String url;
private String icon;
//多对一:多个子菜单 一个父菜单
@ManyToOne
@JoinColumn(name = "parent_id")
@JsonIgnore//Ignore:忽视 -> SpringMVC生成JSON的时候去忽视它
private Menu parent;
//@OneToMany(mappedBy = "parennt")
//@JoinColumn(name = "parent_id")
/*
上面是 一对多:一个父菜单 多个子菜单【这样也可以】
但是一对多的性能非常差,所以我们能不用一对多就尽量不要用
这里我们可以用@Transient,可以让JPA不去管他---临时属性
*/
@Transient//@Transient:临时属性
private List<Menu> children = new ArrayList<>();
1.2.2 Permission
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "menu_id")
private Menu menu;
1.2.2 MenuRepository
public interface MenuRepository extends BaseRepository<Menu,Long>{
//拿到所有的父菜单
@Query("select o from Menu o where o.url is null")
List<Menu> findParentMenus();
//根据用户名拿到他的响应菜单
@Query("select distinct m from Employee o join o.roles r join r.permissions p join p.menu m where o.id = ?1")
List<Menu> findMenuByUser(Long userId);
}
1.2.3 IMenuService
public interface IMenuService extends IBaseService<Menu,Long>{
List<Menu> findMenuByUser();
List<Menu> findParentMenus();
}
1.2.3
1.2.3 MenuController
//加一个方法,拿到父菜单
1.2.4 main路径修改
1.2.5 字段要对应上,不能就是英文
image.png1.2.6 一对多
-
一对多的性能是非常差的,能不用就不要使用它。
但是双向一对多就可以解决这个问题。
1.3 现在是所有菜单都显示了,接下里拉控制权限菜单(需求二)
1.3.1
1.根据当前登录用户获取到它所有菜单
流畅:
image.png1.3MenuRepository
1.3.MenuServiceImpl
1.3抽公共类
1.3MenuController 拿到当前用户的菜单
1.3测试
1.4
二、原生POI
2.1 Java操作Excel(word、ppt)
在开源社区提供了两种解决方案:POI、JXL
JXL:只对Excel可以操作,并且比较老大框架
POI:是apache旗下的,他这比较强03/07是都支持的
现在这些办公软件的版本是非常多的,最主要的经典还是两个版本
HssF(.xls)就是03版本的
XSSF(.xlsx)就是07版本的
2.2 入门(创建Excel、99乘法表)
入门教学网址: