zoukankan      html  css  js  c++  java
  • Spring boot + jdbcTemplate + MySQL实现增删改查

    目录结构

    数据库结构

    1. 添加相关引用

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- 引入jdbc支持 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <!-- 连接MySQL数据库 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!-- 生成api文档 -->
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.2.2</version>
            </dependency>
        </dependencies>

    2. 在application.properties配置连接MySQL数据库

    spring.datasource.url=jdbc:mysql://localhost:3306/test_db?serverTimezone=GMT%2B8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver

    3. 创建实体对象

     Student.java

    package com.hsl.springbootjdbctemplate.entity;
    
    import java.io.Serializable;
    
    public class Student {
        private int id;
        private String name;
        private int sex;
        private int age;
    
        public Student() {
    
        }
    
        public Student(int id, String name, int sex, int age) {
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getSex() {
            return sex;
        }
    
        public void setSex(int sex) {
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

    4. 定义接口

     UserService.java

    package com.hsl.springbootjdbctemplate.service;
    
    import com.hsl.springbootjdbctemplate.entity.Student;
    
    import java.util.List;
    import java.util.Map;
    
    public interface UserService {
        /**
         * 获取用户总量
         * @return
         */
        String getAllUsers();
    
        /**
         * 获取全部学生
         * @return
         */
        List<Map<String, Object>> findAll();
    
        /**
         * 根据id获取学生
         * @param id
         * @return
         */
        Student getById(int id);
    
        /**
         * 增加学生
         * @param student
         * @return
         */
        int addStu(Student student);
    
        /**
         * 根据id删除学生
         * @param id
         * @return
         */
        int deleteStu(int id);
    
        /**
         * 修改学生信息
         * @param student
         * @return
         */
        int updateStu(Student student);
    
        /**
         * 判断是否存在该学生
         * @param id
         * @return
         */
        int isHasStu(int id);
    }

    5. 通过jdbcTemplate实现接口中定义的数据访问操作

     UserServiceImpt.java

    package com.hsl.springbootjdbctemplate.service;
    
    import com.hsl.springbootjdbctemplate.entity.Student;
    import com.sun.org.apache.bcel.internal.generic.LSTORE;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.PreparedStatementCreator;
    import org.springframework.jdbc.core.PreparedStatementSetter;
    import org.springframework.jdbc.core.RowMapper;
    import org.springframework.jdbc.support.GeneratedKeyHolder;
    import org.springframework.jdbc.support.KeyHolder;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import javax.swing.plaf.basic.BasicTreeUI;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.Map;
    
    @Service
    public class UserServiceImpt implements UserService {
        @Autowired
        private JdbcTemplate jdbcTemplate;
        @Override
        public String getAllUsers(){
            return jdbcTemplate.queryForObject("select count(1) from STUDENT", String.class);
        }
    
        @Override
        public List<Map<String, Object>> findAll() {
            String sql = "select * from sTUDENT";
            List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
            return list;
        }
    
        @Override
        public Student getById(int id) {
            String sql = "select * from student where id = ? ";
            List<Student> stu = jdbcTemplate.query(sql,new Object[]{id}, new StudentRowMapper());
            Student student = null;
            if(!stu.isEmpty()){
                student = stu.get(0);
            }
            return student;
        }
    
        /**
         * 插入用户-防止sql注入-可以返回该条记录的主键
         * @param student
         * @return
         */
        @Override
        public int addStu(Student student) {
            String sql = "insert into student(id,name,sex,age) values(null,?,?,?)";
            KeyHolder keyHolder = new GeneratedKeyHolder();
            int resRow = jdbcTemplate.update(new PreparedStatementCreator() {
                @Override
                public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                    PreparedStatement ps = connection.prepareStatement(sql,new String[]{"id"});
                    ps.setString(1,student.getName());
                    ps.setInt(2,student.getSex());
                    ps.setInt(3,student.getAge());
                    return ps;
                }
            },keyHolder);
            System.out.println("操作记录数:"+resRow+" 主键:"+keyHolder.getKey());
            return Integer.parseInt(keyHolder.getKey().toString());
        }
    
        @Override
        public int deleteStu(int id) {
            String sql = "delete from student where id = ?";
            return jdbcTemplate.update(sql,id);
        }
    
        @Override
        public int updateStu(Student student) {
            String sql = "update student set name=?,sex=?,age=? where id=?";
            int res = jdbcTemplate.update(sql, new PreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement preparedStatement) throws SQLException {
                    preparedStatement.setString(1,student.getName());
                    preparedStatement.setInt(2,student.getSex());
                    preparedStatement.setInt(3,student.getAge());
                    preparedStatement.setInt(4,student.getId());
                }
            });
            return res;
        }
    
        @Override
        public int isHasStu(int id) {
            String sql = "select * from student where id=?";
            List<Student> student = jdbcTemplate.query(sql, new Object[]{id}, new StudentRowMapper());
            if (student!=null && student.size()>0){
                return 1;
            } else {
                return 0;
            }
        }
    }
    
    
    class StudentRowMapper implements RowMapper<Student> {
    
        @Override
        public Student mapRow(ResultSet resultSet,int i) throws SQLException{
            Student stu = new Student();
            stu.setId(resultSet.getInt("id"));
            stu.setAge(resultSet.getInt("age"));
            stu.setSex(resultSet.getInt("sex"));
            stu.setName(resultSet.getString("name"));
            return stu;
        }
    }

    6. 定义controller

    UserController.java

    package com.hsl.springbootjdbctemplate.controller;
    
    import com.hsl.springbootjdbctemplate.entity.Student;
    import com.hsl.springbootjdbctemplate.service.UserService;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    import java.util.Map;
    
    @RestController
    @RequestMapping("/users")
    public class UserController {
        @Autowired
        private UserService service;
    
        @ApiOperation(value = "获取用户总数",notes = "")
        @RequestMapping(value = "/getAllUsers", method = RequestMethod.GET)
        public String getAllUsers(){
            return service.getAllUsers();
        }
    
        //http://127.0.0.1:8080/users/
        @ApiOperation(value = "获取用户列表",notes = "")
        @RequestMapping(value = "/", method = RequestMethod.GET)
        public List<Map<String, Object>> findAll(){
            List<Map<String, Object>> list = service.findAll();
            return list;
        }
    
        //http://127.0.0.1:8080/users/1
        @ApiOperation(value = "获取用户",notes = "根据用户id获取用户")
        @RequestMapping(value = "/{id}", method = RequestMethod.GET)
        public Student getStuById(@PathVariable int id){
            Student student = service.getById(id);
            return student;
        }
    
        //http://127.0.0.1:8080/users/
        @ApiOperation(value = "添加用户",notes = "添加用户")
        @RequestMapping(value = "/", method = RequestMethod.POST)
        public int addStu(Student student){
            //System.out.println(student.getName());
            int res = service.addStu(student);
            return res;
        }
    
        @ApiOperation(value = "删除用户",notes = "根据用户Id删除用户")
        @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
        public int deleteStu(@PathVariable int id){
            System.out.println(id);
            int res = service.deleteStu(id);
            return res;
        }
    
        @ApiOperation(value = "修改用户信息",notes = "根据用户Id修改用户信息")
        @RequestMapping(value = "/", method = RequestMethod.PUT)
        public int updateStu(Student student){
            System.out.println(student.getId());
            int isHas = service.isHasStu(student.getId());
            int res = 0;
            if (isHas==1){
                res = service.updateStu(student);
            }
            return res;
        }
    
    }

     7. 生成文档

    在controller层新建Swagger2.java,并在UserController.java中添加注解@ApiOpeation(value="", notets="")

    package com.hsl.springbootjdbctemplate.controller;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class Swagger2 {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.hsl"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("使用jdbcTemplate的增删该查")
                    .description("第一个jdbcTemplate")
                    .termsOfServiceUrl("http://blog.didispace.com/")
                    .contact("LevineHua")
                    .version("1.0")
                    .build();
        }
    }

    文档地址:http://127.0.0.1:8080/swagger-ui.html

    效果:

    8. 使用postman测试接口

      8.1 获取用户列表

      

      8.2 获取用户

       

      8.3 获取用户总数

       

      8.4 添加用户

       

      8.5 修改用户

       

      8.6 删除用户

       

  • 相关阅读:
    Java学习笔记之——封装
    Java学习笔记之——String和Arrays常用方法
    Flask+uwsgi+virtualenv环境配置
    shell常用函数封装-main.sh
    APK模式下,epg版本升级,需要做同步
    cboss升级顺序
    Mariadb使用xtrabackup工具备份数据脚本
    Seaweedfs-启动脚本
    运营商-工作内容调整记录
    MSC服务器-主从检测脚本-check_server_state.sh
  • 原文地址:https://www.cnblogs.com/huasonglin/p/10817940.html
Copyright © 2011-2022 走看看