ssm-maven

ssm-maven

分模块开发、依赖管理、聚合和继承、属性、多环境配置与应用、私服

分模块开发
  1. 创建Maven模块
  2. 书写模块代码
  3. 通过maven指令安装模块到本地仓库(install 指令)
依赖管理
  1. 依赖传递与冲突问题
    1. 特殊优先
    2. 路径优先
    3. 声明优先
  2. 可选依赖和排除依赖
    A依赖B,B依赖C,C通过依赖传递会被A使用到,现在要想办法让A不去依赖C
    可选依赖是在B上设置<optional>,A不知道有C的存在
    排除依赖是在A上设置<exclusions>,A知道有C的存在,主动将其排除掉
聚合
  1. 创建一个空的maven项目
  2. 将项目的打包方式改为pom 默认jar,web项目war, 聚合或者继承pom
  3. pom.xml添加所要管理的项目
  4. 使用聚合统一管理项目

继承

作用: 简化配置、减少版本冲突

  1. 创建一个空的Maven项目
  2. 将其打包方式设置为pom
  3. 在子项目中设置其父工程
  4. 优化子项目共有依赖导入问题
    1. 将子项目共同使用的jar包都抽取出来,维护在父项目的pom.xml中
    2. 删除子项目中已经被抽取到父项目的pom.xml中的jar包
  5. 优化子项目依赖版本问题
    问题:引入了过多自己不需要的jar包
    1. 在父工程的pom.xml定义依赖管理
    2. 在子项目的pom.xml添加需要的依赖 不需要添加版本号
属性

解决属性修改问题

  1. 父工程中定义版本属性
  2. 修改依赖的version

配置文件加载属性

  1. 父工程定义属性
  2. 资源文件中引用属性
  3. 设置maven过滤文件范围 ${project.basedir}

在Maven中的属性分为:

  • 自定义属性(常用)
  • 内置属性
  • Setting属性
  • Java系统属性
  • 环境变量属性

版本管理

  • SNAPSHOT
  • RELEASE
  • alpha
  • beta
  • 纯数字版
多环境配置与应用

父工程中定义多环境

<profiles>
	<profile>
    	<id>环境名称</id>
        <properties>
        	<key>value</key>
        </properties>
        <activation>
        	<activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    ...
</profiles>

使用多环境(构建过程)

mvn 指令 -P 环境定义ID[环境定义中获取]
譬如: mvn install -P env_dev

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个基于SSM框架和layui前端框架实现的分页实例: 首先,在Maven中引入相关依赖: ```xml <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.4</version> </dependency> <!-- C3P0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.5</version> </dependency> <!-- layui --> <dependency> <groupId>com.layui</groupId> <artifactId>layui</artifactId> <version>2.5.6</version> </dependency> ``` 接着,创建一个实体类`User`,对应数据库中的`user`表: ```java public class User { private Integer id; private String name; private Integer age; //省略getter/setter方法 } ``` 然后,创建DAO层接口`UserMapper`,以及对应的XML文件`UserMapper.xml`,实现分页查询: ```java public interface UserMapper { List<User> getUserList(@Param("start") Integer start, @Param("pageSize") Integer pageSize); Integer getUserCount(); } ``` ```xml <select id="getUserList" resultType="User"> select * from user limit #{start},#{pageSize} </select> <select id="getUserCount" resultType="Integer"> select count(*) from user </select> ``` 再创建Service层接口`UserService`及其实现类`UserServiceImpl`,调用DAO层方法实现业务逻辑: ```java public interface UserService { PageInfo<User> getUserList(Integer pageNum, Integer pageSize); } @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public PageInfo<User> getUserList(Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.getUserList((pageNum - 1) * pageSize, pageSize); PageInfo<User> pageInfo = new PageInfo<>(userList); int totalCount = userMapper.getUserCount(); pageInfo.setTotal(totalCount); return pageInfo; } } ``` 最后,创建Controller类`UserController`,处理前端请求并返回分页数据: ```java @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("/user/list") @ResponseBody public TableResult<User> getUserList(@RequestParam(value = "page", defaultValue = "1") Integer pageNum, @RequestParam(value = "limit", defaultValue = "10") Integer pageSize) { PageInfo<User> pageInfo = userService.getUserList(pageNum, pageSize); TableResult<User> result = new TableResult<>(); result.setCode(0); result.setMsg(""); result.setCount(pageInfo.getTotal()); result.setData(pageInfo.getList()); return result; } } ``` 其中,`TableResult`是一个通用的分页返回结果类: ```java public class TableResult<T> { private Integer code; private String msg; private Long count; private List<T> data; //省略getter/setter方法 } ``` 最后,在前端页面中引入layui的分页组件: ```html <table id="userTable" lay-filter="userTable"></table> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> <script> layui.use(['table', 'layer'], function () { var table = layui.table; var layer = layui.layer; table.render({ elem: '#userTable', url: '/user/list', method: 'get', page: true, cols: [[ {field: 'id', title: 'ID', width: 70}, {field: 'name', title: '姓名', width: 120}, {field: 'age', title: '年龄', width: 70}, {fixed: 'right', title: '操作', toolbar: '#barDemo', width: 150} ]] }); }); </script> ``` 这样,一个基于SSM和layui的分页实例就完成了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值