言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
package com.star.entity;
/**
-
@Description: 用户实体类
-
@Author: ONESTAR
-
@Date: Created in 22:57 2020/3/27
-
@QQ: 316392836
-
@URL: http://122.51.28.187:8080/
*/
public class User {
private Integer id;
private String username;
private String PASSWORD;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPASSWORD() {
return PASSWORD;
}
public void setPASSWORD(String PASSWORD) {
this.PASSWORD = PASSWORD;
}
@Override
public String toString() {
return “User{” +
“id=” + id +
“, username='” + username + ‘’’ +
“, PASSWORD='” + PASSWORD + ‘’’ +
‘}’;
}
}
2、创建用户持久层接口:UserDao
package com.star.dao;
import com.star.entity.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
-
@Description: 用户持久层接口
-
@Author: ONESTAR
-
@Date: Created in 22:59 2020/3/27
-
@QQ: 316392836
-
@URL: http://122.51.28.187:8080/
*/
public interface UserDao {
//查询所有用户
@Select(“select * from users”)
List getAllUser();
}
3、创建业务层接口和实现类:UserService、UserServiceImpl
package com.star.service;
import com.star.entity.User;
import java.util.List;
/**
-
@Description: 用户业务层接口
-
@Author: ONESTAR
-
@Date: Created in 23:04 2020/3/27
-
@QQ: 316392836
-
@URL: http://122.51.28.187:8080/
*/
public interface UserService {
//查询所有用户
List getAllUser();
}
package com.star.service.impl;
import com.star.dao.UserDao;
import com.star.entity.User;
import com.star.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
-
@Description: 用户业务层接口实现类
-
@Author: ONESTAR
-
@Date: Created in 23:06 2020/3/27
-
@QQ: 316392836
-
@URL: http://122.51.28.187:8080/
*/
@Service
public class UserServiceImpl implements UserService {
@Resource
UserDao userDao;
@Override
public List getAllUser() {
return userDao.getAllUser();
}
}
4、创建用户控制层:UserController
package com.star.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.star.entity.User;
import com.star.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
-
@Description: 用户控制层
-
@Author: ONESTAR
-
@Date: Created in 23:07 2020/3/27
-
@QQ: 316392836
-
@URL: http://122.51.28.187:8080/
*/
@Controller
public class UserController {
@Autowired
UserService userService;
@GetMapping(“/findUser”)
public String findUser(Model model,@RequestParam(defaultValue = “1”,value = “pageNum”) Integer pageNum){
PageHelper.startPage(pageNum,5);
List list = userService.getAllUser();
PageInfo pageInfo = new PageInfo(list);
model.addAttribute(“pageInfo”,pageInfo);
return “index”;
}
}
在这里可以看到,PageHelper.startPage(int PageNum,int PageSize):,这个是用来设置页面的位置和展示的数据条目数的,我们设置每页展示5条数据。PageInfo用来封装页面信息,返回给前台界面,一些PageInfo的参数:
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//当前页展示的数据的起始行
private int startRow;
//当前页展示的数据的结束行
private int endRow;
//总记录数–所需要进行分页的数据条数
private long total;
//总页数
private int pages;
//页面展示的结果集,比如说当前页要展示20条数据,则此list为这20条数据
private List list;
//前一页页码
private int prePage;
//下一页页码
private int nextPage;
//是否为第一页,默认为false,是第一页则设置为true
private boolean isFirstPage ;
//是否为最后一页默认为false,是最后一页则设置为true
private boolean isLastPage ;
//是否有前一页,默认为false,有前一页则设置为true
private boolean hasPreviousPage ;
//是否有下一页,默认为false,有后一页则设置为true
private boolean hasNextPage ;
//导航页码数,所谓导航页码数,就是在页面进行展示的那些1.2.3.4…
//比如一共有分为两页数据的话,则将此值设置为2
private int navigatePages;
//所有导航页号,一共有两页的话则为[1,2]
private int[] navigatepageNums;
//导航条上的第一页页码值
private int navigateFirstPage;
//导航条上的最后一页页码值
private int navigateLastPage;
5、添加 MapperScan 注解
修改 Application ,在类前添加 MapperScan 注解,修改后如下:
package com.star;
总结
这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!
某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!
成功只会留给那些有准备的人!
m.star;
总结
这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!
某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!
成功只会留给那些有准备的人!
[外链图片转存中…(img-ovQtCmQ8-1715583184439)]