一:前台注意事项
     
    
   
    
     ①:获取项目名格式
    
   
<input type="text" th:text="@{/}">
//访问某项目的文件
<link rel="stylesheet" th:href="@{/static/js/bootstrap3/css/bootstrap.min.css}">
    
     ②传值(字符串的拼接)
    
   
<a th:href="@{'/teacher/del/'+${teacher.tid}}">删除</a>
<a th:href="@{'/teacher/toEdit?tid='+${teacher.tid}}">修改</a>
    
     ③三元运算符的形式
    
   
<form th:action="@{${teacher.tid} ? '/teacher/edit' : '/teacher/add'}" method="post" enctype="multipart/form-data"></form>
    
     ④ utext 与text区别
    
   
//utext 当前标签追加上html的字符串 有样式
<ul class="pagination pagination-sm" th:utext="${pageCode}"></ul>
//直接打印出字符串
<ul class="pagination pagination-sm" th:text="${pageCode}"> </ul>
   区别 前者 utext 后者 text
    
   
    
     ⑤:回显 thyemleaf
    
   
//默认选中第一个
<input type ="radio" name="repaymentType"
	th:each ="repaymentType,repaymentState:${repaymentTypeList}"
	th:value="${repaymentType.dictName}"
	th:text ="${repaymentType.dictName}"
	th:attr ="checked=${repaymentState.index==0?true:false}">
//单选回显
<input type="radio" name="repaymentType"
   th:each ="repaymentType:${repaymentTypeList}"
   th:value="${repaymentType.dictName}"
   th:text ="${repaymentType.dictName}"
   th:attr ="checked=${financeProductDO.repaymentType == repaymentType.dictName?true:false}">
//多选回显
<input type ="checkbox" name="companyRole"
	th:each ="role : ${companyRoleList}"
	th:value="${role.dictName}"
	th:text ="${role.dictName}"
	th:attr ="checked=${companyInformation.companyRole.contains(role.dictName)?true:false}">
//下拉选回显默认选中 前台接收到参数:user对象和businessList集合
<option th:selected="${user.businessId eq busi.businessId}"
		th:each="busi:${businessList}"
		th:value="${busi.businessId}"
		th:text="${busi.businessName}" >
</option>
    
     二:后台注意事项
    
   
① 分页需要到一个 PageUtil
c标签 PageBean 基于jsp ,bootstrap 直接通过controller层调方法,传分页值去页面
②:从零也开始查起 所有要减1
③: 要获取总记录数 方法返回的值是Page
④:jpa有内置的分页接口
public Page<Teacher> listPager(Teacher teacher, PageBean pageBean) {
        //jpa的Pageable分页是从0页码开始
        //pageHelper.start("当前页","当前记录数",""总记录数),所以返回的Page
        Pageable pageable = PageRequest.of(pageBean.getPage()-1, pageBean.getRows());
        return teacherDao.findAll(new Specification<Teacher>() {
            @Override
            public Predicate toPredicate(Root<Teacher> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                Predicate predicate = criteriaBuilder.conjunction();
                if(teacher != null&&teacher.getTname()!=null &&!"".equals(teacher.getTname())){
                    if(StringUtils.isNotBlank(teacher.getTname())){
                        predicate.getExpressions().add(criteriaBuilder.like(root.get("tname"),"%"+teacher.getTname()+"%"));
                    }
                }
                return predicate;
            }
        },pageable);
    }⑤:上传文件需要application.yml配置文件的大小 否则上传不成功 默认支持上传1MB
 # 解决图片上传大小限制问题,也可采取配置类
  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 60MB
    三:后台简易版的增删查改
   
导入pom.xml依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>application.yml配置
server:
  servlet:
    context-path: /springboot
spring:
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=utf8
    username: mybatis_ssm
    password: xiaoli
    druid:
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 30000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: true
      test-on-return: f 
版权声明:本文为Kikyou994755原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
