手把手教你怎么使用sprinboot+thymeleaf实现增删改查

写这个东西最多算的上是对自己前段时间的工作总结,来自己实现以下这些功能,最后希望自己以后能多看点数据结构方面的内容,多刷一点算法方面的题目,这篇博客仅用来帮助一下最开始入门的那些人。
先附上整个项目的目录结构图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191226105618382.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/20191226105637772.png)

项目的整体结构如下,首先先打开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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值