Java育儿园约架专栏

智能销售系统(八)菜单/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.png
   1.2.6 一对多

 1.3 现在是所有菜单都显示了,接下里拉控制权限菜单(需求二)

   1.3.1 

1.根据当前登录用户获取到它所有菜单

流畅:

image.png

1.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乘法表)

入门教学网址:

三、EasyuiPOI

 3.1 入门

image.png
上一篇下一篇

猜你喜欢

热点阅读