写这个东西最多算的上是对自己前段时间的工作总结,来自己实现以下这些功能,最后希望自己以后能多看点数据结构方面的内容,多刷一点算法方面的题目,这篇博客仅用来帮助一下最开始入门的那些人。
先附上整个项目的目录结构图

项目的整体结构如下,首先先打开idea
初始化springboot项目
这个里面使用maven作为项目构建工具,然后构建的时候先选择好这个三个lib包的内容,分别是lombok,mysql,thymeleaf。
最后构建好项目的初始模板,以下是本人所用的pom.xml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
</dependencies>
然后是相应的springboot的配置文件,在Resources文件夹下的application.properties里面写入一下内容。
#port
server.port=8080
#datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/account?useSSL=false
spring.datasource.username = root
spring.datasource.password = 1234
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
#mabatis的扫描位置路径
mybatis.mapper-locations = classpath:mapper/*Mapper.xml
本项目只有一个User实体类,用于简单的登录校验和增删改查操作
实体类User如下:
@Data
@NoArgsConstructor
@Component
public class User{
private int id;
private String username;
private String pwd;
}
如果会使用在dao层加注解的方式,可以不配置相应的xml,但是本项目的mapper.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.Mapper.UserMapper">
<resultMap id="userMap" type="com.example.demo.Entity.User">
<result property="id" column="user_id"></result>
<result property="username" column="user_name"></result>
<result property="pwd" column="user_pwd"></result>
</resultMap>
<select id="count" resultType="int">
select count(*) from user_info;
</select>
<select id="login" parameterType="com.example.demo.Entity.User" resultMap="userMap">
select * from user_info where user_name =#{username} and user_pwd =#{pwd};
</select>
<select id="queryAll" parameterType="Integer" resultMap="userMap">
select * from user_info group by user_id asc limit #{param1},#{param2};
</select>
<select id="query" resultType="com.example.demo.Entity.User" resultMap="userMap">
select * from user_info where user_id = #{id} ;
</select>
<delete id="delete" parameterType="integer">
delete from user_info where user_id = #{id};
</delete>
<update id="edit" parameterType="com.example.demo.Entity.User" >
update user_info set user_name =#{username},user_pwd =#{pwd} where user_id = #{id};
</update>
<insert id="add" parameterType="string">
insert into user_info (user_name,user_pwd) VALUES (#{username},#{pwd});
</insert>
</mapper>
对应的dao层如下
@Mapper
@Repository(value = "UserMapper")
public interface UserMapper{
public User login(@Param("username")String username,@Param("pwd")String pwd);
public int count();
public List<User> queryAll(int start,int row);
public int delete(int id);
public int edit(int id,String username,String pwd);
public User query(int id);
public int add(String username,String pwd);
对应的Service和ServiceImpl如下
@Service
public interface UserService{
public Page<User> queryall(String currentPage,String rows);
public int count();
public User login(@Param("username") String username,@Param("pwd") String pwd);
public int delete(@Param("id") int id);
public int edit(@Param("id")int id,@Param("username")String name,@Param("pwd")String pwd);
public User query(@Param("id") int id);
public int add(@Param("username") String username,@Param("pwd") String pwd);
@Service(value = "userService")
public class UserServiceImpl implements UserService{
@Resource(name = "UserMapper")
private UserMapper userMapper;
@Override
public Page<User> queryall(String _currentPage,String _rows){
Page<User> page = new Page<>();
int currentPage = Integer.parseInt(_currentPage); //获取到当前的页面
int rows = Integer.parseInt(_rows);
int totalCount = userMapper.count();
int totalPage = (totalCount % rows == 0) ? (totalCount / rows) : (totalCount / rows + 1); //总页数
int start = (currentPage - 1) * rows; //起始位置
List<User> list = userMapper.queryAll(start,rows);
page.setRows(rows);
page.setCurrentPage(currentPage);
page.setTotalCount(totalCount);
page.setTotalPage(totalPage);
page.setList(list);
return page;
}
@Override
public int count(){
int size = userMapper.count();
return size;
}
@Override
public User login(String username,String pwd){
User user = userMapper.login(username,pwd);
return user;
}
@Override
public int delete(int id){
return userMapper.delete(id);
}
@Override
public int edit(int id,String name,String pwd){
return userMapper.edit(id,name,pwd);
}
@Override
public User query(int id){
User user = userMapper.query(id);
return user;
}
@Override
public int add(String username,String pwd){
return userMapper.add(username,pwd);
}
}
后面是登录校验的controller层和具体操作的controller层
loginController如下
@Controller
public class LoginController{
@Autowired
private UserMapper userMapper;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(){
return "login";
}
@ResponseBody
@RequestMapping(value = "/login", method = RequestMethod.POST)
public Result login(@RequestParam("username") String username,@RequestParam("pwd")String pwd,
HttpServletRequest request) throws IOException{
HttpSession session = request.getSession();
String code = request.getParameter("code").toUpperCase();
String imgCode = request.getSession().getAttribute("randomcode_key").toString().toUpperCase();
if(code.equals(imgCode)){
User user = userMapper.login(username,pwd);
if(user != null){
TokenGenerator tokenGenerator = new TokenGenerator();
String token = tokenGenerator.createToken();
session.setAttribute("token",token);
Result result = new Result("0","success");
return result;
}
}
return null;
}
}
操作的controller如下
@Controller
public class AccountController{
@Resource(name = "userService")
private UserService userService;
@RequestMapping("/querylist")
public String queryList(String currentPage,Model model,HttpServletRequest request) throws Exception{
HttpSession session = request.getSession();
if(session.getAttribute("token") == null){
return "404";
} else {
if(currentPage == null){
currentPage = "1"; //如果当前页面为空,先跳转到这个页面来
}
String rows = String.valueOf(5);
Page<User> byUser = userService.queryall(currentPage,rows);
model.addAttribute("userList",byUser);
return "user";
}
}
@RequestMapping("/delete")
@ResponseBody
public Result delete(@RequestParam("id") int id){
userService.delete(id);
Result result = new Result("0","success");
return result;
}
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String edit(@RequestParam("id") int id,Model model){
User user = userService.query(id);
model.addAttribute("user",user);
return "edit";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String edit(@RequestParam("id") int id,@RequestParam("username") String name,
@RequestParam("pwd") String pwd){
userService.edit(id,name,pwd);
return "redirect:querylist";
}
@RequestMapping(value = "/add",method = RequestMethod.GET)
public String add(){
return "add";
}
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String add(@RequestParam("username") String name,
@RequestParam("pwd")String pwd){
userService.add(name,pwd);
return "redirect:querylist";
}
}
主要的具体操作就在这里,别的页面校验之类就不放这了
代码在git上,数据库文件也有,自己check下来就能运行
https://github.com/LingCoder/OnJava8.git