springboot 和 mybatis的整合

软件框架教学视频下载地址:https://download.csdn.net/download/m0_51152186/83609056

完成以下功能

    登录

    添加用户

    用户列表

    修改用户

    删除用户

Eclipse-springboot-01-App.java-http://localhost:8080.login.jsp

Navicat-springboot库-userinfo表

 1 springboot整合mybatis


        1) 引入相关依赖
                   <!-- 引入mybatis相关的启动器 -->
                    <dependency>
                        <groupId>org.mybatis.spring.boot</groupId>
                        <artifactId>mybatis-spring-boot-starter</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                    
                    <!-- 引入mysql相关的驱动  如果不加版本说明,它引的是 8.0.21-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <!-- 如果用的是mysql5,可以用下面的版本
                         <version>5.1.34</version>
                      -->
                    </dependency>
                    
                    注意,如果本地安装的mysql是5,则要指明版本

                    <!-- 数据库连接池 -->
                    <dependency>
                        <groupId>com.alibaba</groupId>
                        <artifactId>druid</artifactId>
                        <version>1.0.18</version>
                    </dependency>
    
      2) 配置 application.properties
      
                spring.datasource.username=root
                spring.datasource.password=root
                spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
                spring.datasource.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf8&serverTimezone=UTC&useSSL=false
                
                //如果用的是mysql5 则上面的两条配置要写成//
                //spring.datasource.driver-class-name=com.mysql.jdbc.Driver
                //spring.datasource.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf8
                
                
                //指明数据源类型
                spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
                
                //批量别名定义
                mybatis.type-aliases-package=com.beans
                
                
        3) UserMapper 接口
            package com.dao;
                import java.util.List;
                import com.beans.UserInfo;
                
                public interface UserMapper {    
                    //添加用户
                    int addUser(UserInfo user);
                    
                    //删除用户
                    int deleteUser(int id);
                    
                    //修改用户
                    int updateUser(UserInfo user);
                    
                    //根据id查询用户
                    UserInfo getUserById(int id);
                    
                    //查询所有用户
                    List<UserInfo> getAllUser();

                    //登录
                    UserInfo login(@Param("userName") String userName, @Param("password") String password);
                }
        
        4) 映射文件 UserMapper.xml  可以放在和接口同一个包下
                <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">                        
                <mapper namespace="com.mapper.UserMapper">
                   <insert id="addUser" parameterType="UserInfo">
                            insert into userInfo(userName,password,note) values (#{userName},#{password},#{note})
                   </insert>
                   
                   <delete id="deleteUser" >
                           delete from userInfo where id= #{id}
                   </delete>
                    
                    <update id="updateUser">
                        update userInfo set userName=#{userName},password=#{password},note= #{note} where id =#{id}
                    </update>
                    
                    <select id="getUserById" resultType="UserInfo">
                        select * from userInfo where id=#{id}
                    </select>
                    
                    <select id="getAllUser" resultType="UserInfo">
                        select * from userInfo
                    </select>
                    
                    <select id="login" resultType="UserInfo" >
                        select * from userInfo where userName=#{userName} and password=#{password}
                    </select>
                
                </mapper>
                
        5) 新建业务层接口 com.service.UserService 
        
                    package com.service;
                    import java.util.List;
                    import com.beans.UserInfo;
                    
                    public interface UserService {
                           //添加用户
                            int addUser(UserInfo user);
                            
                            //删除用户
                            int deleteUser(int id);
                            
                            //修改用户
                            int updateUser(UserInfo user);
                            
                            //根据id查询用户
                            UserInfo getUserById(int id);
                            
                            //查询所有用户
                            List<UserInfo> getAllUser();
                                
                            //登录
                            UserInfo login( String userName,String password);
                    }
                                
        
         6) 新建业务层的实现类 com.service.UserServiceImpl
                package com.service;
                import java.util.List;
                import javax.annotation.Resource;
                import org.springframework.stereotype.Service;
                import org.springframework.transaction.annotation.Transactional;
                import com.beans.UserInfo;
                import com.mapper.UserMapper;
                
                //业务层实现类
                @Service  @Transactional
                public  class UserServiceImpl implements UserService{
                    @Resource
                    private UserMapper userMapper;
                    
                    public int addUser(UserInfo user) {
                        return userMapper.addUser(user);
                    }
                
                    public int deleteUser(int id) {
                        return userMapper.deleteUser(id);
                    }
                
                    public int updateUser(UserInfo user) {
                        return userMapper.updateUser(user);
                    }
                
                    public UserInfo getUserById(int id) {
                        return userMapper.getUserById(id);
                    }
                
                    public List<UserInfo> getAllUser() {
                        return userMapper.getAllUser();
                    }
                
                    public UserInfo login(String userName, String password) {
                        return userMapper.login(userName, password);
                    }
                }
                        
            说明 @Transactional 注解的作用,是开启事务管理
            
        7) 控制层中的登录和查询所有
                    package com.controller;
                    import java.util.List;
                    import javax.annotation.Resource;
                    import org.springframework.stereotype.Controller;
                    import org.springframework.ui.*;
                    import org.springframework.web.bind.annotation.*;
                    import com.beans.UserInfo;
                    import com.service.UserService;
                    
                    @Controller
                    public class UserController {
                        @Resource
                        private UserService userService; 
                        
                        @PostMapping("/login")
                        public String login(String userName,String password,ModelMap m) {    
                            UserInfo user= userService.login(userName, password);
                            if(user!=null) {
                                return "main";  // 物理 视图=   前缀 + 逻辑视图 +后缀   ==> /WEB-INF/pages/main.jsp
                            }
                            
                            else {
                                m.put("msg","账号或密码错误,登录失败");
                                return "forward:/login.jsp";
                            }
                        }
                        
                        @GetMapping("/searchAll")
                        public String getAll(Model m) {
                            List<UserInfo> userList= userService.getAllUser();
                            m.addAttribute("userList", userList);
                            return "user-manager";     
                        }
                    }
                    
        8) 在主启动上加 @MapperScan("com.mapper") 指明到哪里加载映射文件
                @SpringBootApplication
                @MapperScan("com.mapper")
                public class App {
                    public static void main(String[] args) {
                        SpringApplication.run(App.class, args); 
                    }
                }

       注意,要给UserInfo类加一个默认的无参的构造方法

2 用户添加功能


   1) 在 main.jsp 上
  
     <ul>
             <li><a href="/searchAll"> 查询所有</a></li>
             <li><a href="/gotoAddUser"> 添加用户 </a></li>
             <li><a> 退出系统 </a></li>
     </ul>
          
         说明: 
         由于添加用户的页面user-add.jsp,也放在 WEB-INF/pages/  下,
         所以不能从客户端直接转向,要从服务端 "绕行" 
         
    
    2) 控制层
            @GetMapping("/gotoAddUser")
            public String gotoAddUser() {
                return "user-add"; 
            }
            
  3) 在 WEB-INF/pages/  建 user-add.jsp 
                <h1>用户添加</h1>
                <hr />
                
                <form action="/userAdd" method="post">
                    账号: <input name="userName" >  <br />
                    密码: <input name="password" > <br />
                    备注: <textarea name="note"></textarea> <br />
                    
                    <input type="submit" value="提交" οnclick='return confirm("确认提交吗")'>
                </form>
                
                ${msg }
                
     4) 控制层     
                @PostMapping("/userAdd")
                public String add(UserInfo user,ModelMap m) {
                    userService.addUser(user);
                    m.put("msg","用户添加成功");
                    return "user-add";
                }

3 数据回显


    页面上 用 ${param.属性名} 的方式处理
        <form action="/userAdd" method="post">
            账号: <input name="userName"  value="${param.userName }" >  <br />
            密码: <input name="password"  value="${param.password }"  > <br />
            备注: <textarea name="note" >${param.note}</textarea> <br />
            
            <input type="submit" value="提交" οnclick='return confirm("确认提交吗")'>
        </form>
        
        
        请求参数: 请求发起的时候带上去的数据,比如表单中的数据,超链接url后面的参数等 ,这些数据是在请求发起的时候就提交上去的,不能半途再增加 
        
        作用域数据:
             在服务端,手动的往这个请求中添加了的数据 比如 request.setAttribute("msg","成功"), 它是在服务端进行的,可以添加多个 
             
        无论是请求参数,还是作用域数据,只要请求不断,在 "终点" 上都可以取出来
        
        取请求数据用 ${param.字段名}  比如  ${param.userName}  
        取作用域数据 ${字段名}  比如 ${msg} , ${userInfo.userName}

      4 用户修改功能


            1)发起请求  在 WEB-INF/pages/user-manger.jsp 上
            
                 <c:forEach var="u" items="${userList }">
                        <tr>
                            <td>${u.id }</td>
                            <td>${u.userName }</td>
                            <td>${u.password }</td>
                            <td>${u.note }</td>
                            <td>
                                <a href="/searchForUpdate?id=${u.id }" >修改</a> | <a href="" >删除</a>
                            </td>
                        </tr>
                    </c:forEach>
                    
            2) 控制层
                    @GetMapping("/searchForUpdate")
                    public String searchForUpdate(int id,ModelMap m) {
                        UserInfo userInfo=userService.getUserById(id);
                        m.put("userInfo",userInfo);
                        return "user-update";     
                    }
                    
            3) WEB-INF/pages/user-update.jsp            
                    <h1>用户修改</h1>
                    <hr />
                    
                    <form action="/update" method="post">
                              <input name="id" type="hidden" value="${userInfo.id }"  >
                        账号: <input name="userName"  value="${userInfo.userName }" >  <br />
                        密码: <input name="password"  value="${userInfo.password }"  > <br />
                        备注: <textarea name="note" >${userInfo.note}</textarea> <br />
                        
                        <input type="submit" value="提交" οnclick='return confirm("确认提交吗")'>
                    </form>
                    
                    ${msg }
                    
            
            4) 提交以后,到控制层 
                    @PostMapping("/update")
                        public String update(UserInfo user,ModelMap m) {
                            userService.updateUser(user);
                            m.put("msg","用户更新成功");
                            return "user-update"; 
                        }


       5 删除功能


         1) 发起请求  WEB-INF/pages/user-manager.jsp 
                 
                 <c:forEach var="u" items="${userList }">
                        <tr>
                            <td>${u.id }</td>
                            <td>${u.userName }</td>
                            <td>${u.password }</td>
                            <td>${u.note }</td>
                            <td>
                                <a href="/searchForUpdate?id=${u.id }" >修改</a> | <a href="/delete?id=${u.id }" >删除</a>
            
                            </td>
                        </tr>
                    </c:forEach>
                    
            
            2) 控制层 
                    @GetMapping("/delete")
                    public String deleteUser(int id,Model m){
                        userService.deleteUser(id);
                        return getAll(m);
                    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无处安放的小曾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值