若依框架文档开发手册----开发中常用功能模块(下)

简介: 若依框架文档开发手册----开发中常用功能模块

若依框架文档开发手册----开发中常用功能模块(中):https://developer.aliyun.com/article/1418633


默认全屏打开添加页

<a class="btn btn-success" onclick="$.operate.addFull()" shiro:hasPermission="system:notice:add">
    <i class="fa fa-plus"></i> 新增
</a>


Thymeleaf


标签


1.all:删除包含标签和所有的孩子。

2.body:不包含标记删除,但删除其所有的孩子。

3.tag:包含标记的删除,但不删除它的孩子。

4.all-but-first:删除所有包含标签的孩子,除了第一个。

5.none:什么也不做。这个值是有用的动态评估。


循环

   <tr  th:each="user,userStat : ${list}">  
                <td th:text="${user.userName}">Onions</td>  
                <td th:text="${user.email}">test@test.com.cn</td>  
                <td th:text="${user.isAdmin}">yes</td>  
                 <th th:text="${userStat.index}">状态变量:index</th>  
                <th th:text="${userStat.count}">状态变量:count</th>  
                <th th:text="${userStat.size}">状态变量:size</th>  
                <th th:text="${userStat.current.userName}">状态变量:current</th>  
                <th th:text="${userStat.even}">状态变量:even****</th>  
                <th th:text="${userStat.odd}">状态变量:odd</th>  
                <th th:text="${userStat.first}">状态变量:first</th>  
                <th th:text="${userStat.last}">状态变量:last</th>  
    </tr>


判断

<th:block th:if="...">
  <div id="div1">
  </div>
  <div id="div2">
  </div>
</th:block>


JS取值

// 注意script属性
<script th:inline="javascript">
    var message = [[${message}]];
    console.log(message);
// 注意 这种也可以取值 并且取出的值为字符串类型  作用嘛
// 举例 比如在加载页面的icon的时候 如果直接取值fa fa-user-o 就会报错  但是如果在去之前外边加上''那取出的值就是字符串类型 
      // 设置icon图标
    var one_icon = $('#one_icon');
  // 正确赋值
    one_icon.addClass('[[${oneIcon}]]');
  // 报错
  one_icon.addClass([[${oneIcon}]]);
</script>


th:onclick


传递单个参数

th:οnclick="searchHot([[${hot.name}]])"


传递多个Model中参数

th:οnclick="'javascript:searchHot(\''+${hot.name}+'\',\''+${hot.hotType}+'\')'"


传递一个Model中参数 一个非Model中参数

th:οnclick="'javascript:searchHot(\''+${hot.name}+'\','+this+')'"


格式化时间

th:value="*{#dates.format(reserveTime,'yyyy-MM-dd HH:mm:ss')}"


截取字符串

msg.content为被截取的字符串 15为截取长度
<span th:utext="${#strings.abbreviate( msg.content,15)}"></span>


其他-网络文章


blog.csdn.net/zoubo0812/a…


JQuery相关


返回上页

function goBack() {
    window.history.go(-1);
}


后端


系统


当前用户

对当前登录用户的操作已经进行了封装
有获取当前登陆用户 获取当前登录用户ID 等这里不贴源码了
该工具类位置:
com.ruoyi.framework.util.ShiroUtils


定时器


关闭定时器


有时候定时器大家并不一定需要用到 又想把定时器阉割掉 时怎么做呢? 难道要删大量的定时器相关代码吗? 很显然不需要只需要将定时器在启动时初始化的注解注释掉就可以了


新增定时器



在系统监控 --> 定时任务 -->新增定时任务


Controller


关于权限


若依框架使用的是Shiro来进行权限控制


下边介绍一下在Controller新增一个请求地址 然后使这个地址被管理需要做那些操作


  1. 添加注解
  2. 插入sql
  3. 按钮控制


Service


Dao


Mapper


属性封装


发现一篇很有意思的关于封装返回的文章 大概看了一下 这里记录一下 有时间再看


www.cnblogs.com/stefanking/…


说到Mapper不得不说一下vo封装 之前都是写一个association然后再写相应的属性的result 然后导致mapper文件 全是result


这里介绍一下封装的时候引入本文件的其他 或其他文件里的

POJO:

// 继承原实体类得到原实体类的所有属性
@Data
public class EquipmentVo extends Equipment implements Serializable
  {
  //增加两个属性
    /** 供应商 */
    private Supplier supplier;
    /** 所属用户 */
    private SysUser sysUser;
  }


association 标签中的属性

property: vo中的属性名
column:   该属性id对应的的字段名[非必须]
javaType: 该属性的Java类型
resultMap:  引入的本文件的话就是resultMap 的id
      resultMap的id 引入其他文件的resultMap 时是xml文件所对应的Dao的全路径加         resultMap的Id


例:


注意:


Association和Collection使用时机区别:


Association 在一对一,多对一时使用

Collection 在一对多,多对多时使用

在association标签中 javaType属性指向的是实体类的属性

在collection标签中 javaType属性指向的是集合的类型 ofType指向的是集合的泛型类型


Mapper:

 <resultMap type="com.ruoyi.iot.domain.vo.EquipmentVo" id="EquipmentVoResult">
        <result property="id" column="id"/>
        <result property="equipmentNumber" column="equipment_number"/>
        <result property="createTime" column="create_time"/>
        <!-- 供应商 引入其他文件的resultMap 路径dao层路径加resultMap 的id-->
        <association property="supplier" column="s.id" javaType="com.ruoyi.iot.domain.Supplier" resultMap="com.ruoyi.iot.mapper.SupplierMapper.SupplierResult">
            <result property="createTime" column="screate_time"/>
        </association>
        <!--用户 引入当前文件resultMap-->
        <association property="sysUser" column="user_id" javaType="com.ruoyi.system.domain.SysUser" resultMap="SysUserResult">
        </association>
    </resultMap>
<!--用户-->
    <resultMap type="com.ruoyi.system.domain.SysUser" id="SysUserResult">
        <id property="userId" column="user_id"/>
        <result property="deptId" column="dept_id"/>
        <result property="loginName" column="login_name"/>
    </resultMap>


集合遍历


单参数


Dao:

Integer selectEquipmentNumber(List<Integer> statusList);


XML:

<foreach collection="list" item="status" index="index" separator="or" open="(" close=")">
         equipment_status = #{item}
</foreach>


多参数:


Dao:


XML:

<!-- 多参数的 collection为参数的名称 -->


其他


MP忽略null值

  // 修改时忽略null 和空值
    @TableField(strategy = FieldStrategy.IGNORED)
    private BigDecimal discountPrice;


BigDecimal使用


直接复制过来的就不在重复写了


注意除法 divide 是重载的方法 如果直接 a.divide(b) 的话可能会出现该异常:


[ Non-terminating decimal expansion; no exact representable decimal result.]


相当于10/3 无法除尽 尽量指定小数长度和规则

BigDecimal bignum1 = new BigDecimal("10");  
BigDecimal bignum2 = new BigDecimal("5");  
BigDecimal bignum3 = null;  
// 加法  
bignum3 =  bignum1.add(bignum2);       
System.out.println("和 是:" + bignum3);  
// 减法  
bignum3 = bignum1.subtract(bignum2);  
System.out.println("差  是:" + bignum3);  
// 乘法  
bignum3 = bignum1.multiply(bignum2);  
System.out.println("积  是:" + bignum3);  
// 除法  
bignum3 = bignum1.divide(bignum2);  
System.out.println("商  是:" + bignum3);
// 除法2
// scale表示保留小数位数 roundingMode表示为小数模式
divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;
BigDecimal bignum3 = bignum1.divide(bignum2,10,ROUND_HALF_DOWN);


小数模式常量

ROUND_CEILING=如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作。

ROUND_DOWN=从不在舍弃(即截断)的小数之前增加数字。

ROUND_FLOOR=如果 BigDecimal 为正,则作 ROUND_UP ;如果为负,则作 ROUND_DOWN 。

ROUND_HALF_DOWN=若舍弃部分> .5,则作 ROUND_UP;否则,作 ROUND_DOWN 。

ROUND_HALF_EVEN=如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP ;如果它为偶数,则作ROUND_HALF_DOWN 。

ROUND_HALF_UP=若舍弃部分>=.5,则作 ROUND_UP ;否则,作 ROUND_DOWN 。

ROUND_UNNECESSARY=该“伪舍入模式”实际是指明所要求的操作必须是精确的,因此不需要舍入操作。

ROUND_UP=总是在非 0 舍弃小数(即截断)之前增加数字。


正整数判断

BigDecimal bigDecimal = new BigDecimal();
int num = bigDecimal.signum();
// num是-1, 负数
// num是0, 零
// num是1,正数


比较大小

BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}


转String

      // 浮点数的打印 10000000000
        System.out.println(new BigDecimal("10000000000").toString());
        // 普通的数字字符串 100.000
        System.out.println(new BigDecimal("100.000").toString());
        // 去除末尾多余的0 1E+2
        System.out.println(new BigDecimal("100.000").stripTrailingZeros().toString());
        // 避免输出科学计数法 100
        System.out.println(new BigDecimal("100.000").stripTrailingZeros().toPlainString());


MYSQL


获取时间


mysql查询当前系统时间不保留时分秒,保留时分秒,当前时间加一天,当前时间减少一天等

转发至CSDN 原文链接 :blog.csdn.net/liu_yulong/…

SELECT
  CURDATE( ),
  now( ),
  CURTIME( ),
  date_sub( CURDATE( ), INTERVAL 1 DAY ) yestorday,
  date_sub( CURDATE( ), INTERVAL 1 DAY ) today 
FROM
  DUAL;

SELECT
  CURDATE( ) date,
  now( ) dateTime,
  DATE_FORMAT( now( ), '%Y-%m-%d' ) dateFmt,
  DATE_FORMAT( now( ), '%Y-%m-%d' ) dateTimeFmt,
  DATE_FORMAT( now( ), '%Y-%m-%d %H:%i:%s' ) daymins,
  CURTIME( ) times,
  date_sub( CURDATE( ), INTERVAL 1 DAY ) Yesterday ,
  date_sub( CURDATE( ), INTERVAL 0 DAY ) Today  ,
  date_sub( CURDATE( ), INTERVAL 1 DAY ) Tomorrow 
FROM
  DUAL;
目录
相关文章
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的软件工程项目管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的软件工程项目管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
7月前
|
数据库连接
若依框架----进销存系统(一)
若依框架----进销存系统(一)
726 1
|
7月前
|
JavaScript 前端开发
若依框架文档开发手册----开发中常用功能模块(中)
若依框架文档开发手册----开发中常用功能模块
2341 0
|
7月前
若依框架----登录界面美化
若依框架----登录界面美化
827 0
|
7月前
|
弹性计算 NoSQL Java
若依框架---前后端分离项目部署实践
若依框架---前后端分离项目部署实践
459 0
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的《数据库原理及应用》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的《数据库原理及应用》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的社区人员管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的社区人员管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的开放性实验室管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的开放性实验室管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的《数据库系统原理》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的《数据库系统原理》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的课程资源管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课程资源管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
下一篇
DataWorks