请选择 进入手机版 | 继续访问电脑版
设为首页 收藏本站
开启辅助访问 切换到宽版

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

切换风格 立即注册 找回密码

Java教程网

新浪微博达人勋

812

积分

445

帖子

49

贡献

Rank: 4

积分
812

社区QQ达人

发表于 2019-7-20 11:15:47 | 显示全部楼层 |阅读模式
SpringBoot2.x + Mybatis +Druid实现CRUD功能

记录在搭建SpringBoot2.x + Mybatis +Druid+Mysql实现CRUD功能的步骤

环境版本

SpringBoot:2.16Mybatis:3.4.6Druid:1.1.6Mysql: 5.5

第一步:添加Maven依赖pom.xml配置如下
  • <?xml version="1.0" encoding="UTF-8"?>
  • <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  •     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  •     <modelVersion>4.0.0</modelVersion>
  •     <parent>
  •         <groupId>org.springframework.boot</groupId>
  •         <artifactId>spring-boot-starter-parent</artifactId>
  •         <version>2.1.6.RELEASE</version>
  •         <relativePath/> <!-- lookup parent from repository -->
  •     </parent>
  •     <groupId>com.xiaowen</groupId>
  •     <artifactId>SpringBoot_MyBatis</artifactId>
  •     <version>0.0.1-SNAPSHOT</version>
  •     <name>SpringBoot_MyBatis</name>

  •     <properties>
  •         <java.version>1.8</java.version>
  •          <!-- 解决maven的pom.xml文件第一行报错 Unknown Error -->
  •         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
  •     </properties>

  •     <dependencies>
  •         <dependency>
  •             <groupId>org.springframework.boot</groupId>
  •             <artifactId>spring-boot-starter-test</artifactId>
  •             <scope>test</scope>
  •         </dependency>
  •         <dependency>
  •             <groupId>org.springframework.boot</groupId>
  •             <artifactId>spring-boot-starter-web</artifactId>
  •         </dependency>
  •         <!-- 数据库 -->
  •         <dependency>
  •             <groupId>mysql</groupId>
  •             <artifactId>mysql-connector-java</artifactId>
  •            <version>5.1.46</version>
  •         </dependency>
  •         <dependency>
  •             <groupId>org.mybatis.spring.boot</groupId>
  •             <artifactId>mybatis-spring-boot-starter</artifactId>
  •             <version>1.3.2</version>
  •         </dependency>
  •         <!-- Druid Pool -->
  •         <dependency>
  •             <groupId>com.alibaba</groupId>
  •             <artifactId>druid-spring-boot-starter</artifactId>
  •             <version>1.1.16</version>
  •         </dependency>
  •         <dependency>
  •             <groupId>org.springframework</groupId>
  •             <artifactId>spring-jdbc</artifactId>
  •         </dependency>

  •          <dependency>
  •             <groupId>org.projectlombok</groupId>
  •             <artifactId>lombok</artifactId>
  •             <version>1.18.6</version>
  •             <scope>provided</scope>
  •         </dependency>
  •     </dependencies>

  •     <build>
  •         <plugins>
  •             <plugin>
  •                 <groupId>org.springframework.boot</groupId>
  •                 <artifactId>spring-boot-maven-plugin</artifactId>
  •             </plugin>
  •         </plugins>
  •     </build>

  • </project>

第二步:配置application.yml
  • server:
  •   port: 8080

  • spring:
  •   datasource:
  •     druid:
  •       # 数据库访问配置, 使用druid数据源
  •       type: com.alibaba.druid.pool.DruidDataSource
  •       driver-class-name: com.mysql.jdbc.Driver
  •       url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
  •       username: root
  •       password: 123456
  •       # 连接池配置
  •       initial-size: 5
  •       min-idle: 5
  •       max-active: 20
  •       # 连接等待超时时间
  •       max-wait: 30000
  •       # 配置检测可以关闭的空闲连接间隔时间
  •       time-between-eviction-runs-millis: 60000
  •       # 配置连接在池中的最小生存时间
  •       min-evictable-idle-time-millis: 300000
  •       validation-query: select 'x'
  •       test-while-idle: true
  •       test-on-borrow: false
  •       test-on-return: false
  •       # 打开PSCache,并且指定每个连接上PSCache的大小
  •       pool-prepared-statements: true
  •       max-open-prepared-statements: 20
  •       max-pool-prepared-statement-per-connection-size: 20
  •       # 配置监控统计拦截的filters, 去掉后监控界面sql无法统计, 'wall'用于防火墙
  •       filters: stat,wall
  •       # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
  •       aop-patterns: com.xiaowen.servie.*


  •       # WebStatFilter配置
  •       web-stat-filter:
  •         enabled: true
  •         # 添加过滤规则
  •         url-pattern: /*
  •         # 忽略过滤的格式
  •         exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

  •       # StatViewServlet配置
  •       stat-view-servlet:
  •         enabled: true
  •         # 访问路径为/druid时,跳转到StatViewServlet
  •         url-pattern: /druid/*
  •         # 是否能够重置数据
  •         reset-enable: false
  •         # 需要账号密码才能访问控制台
  •         login-username: druid
  •         login-password: druid123
  •         # IP白名单
  •         # allow: 127.0.0.1
  •         # IP黑名单(共同存在时,deny优先于allow)
  •         # deny: 192.168.1.218

  •       # 配置StatFilter
  •       filter:
  •         stat:
  •           log-slow-sql: true

第三步:创建数据库并插入初始化数据
  • CREATE TABLE `t_student` (
  •   `sid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  •   `sno` varchar(10) DEFAULT NULL,
  •   `name` varchar(100) DEFAULT NULL,
  •   `sex` varchar(100) DEFAULT NULL,
  •   PRIMARY KEY (`sid`)
  • ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
  • ##插入数据
  • insert  into `t_student`(`sid`,`sno`,`name`,`sex`)
  • values
  • (1,'001','张三','男'),(2,'002','李四','男'),(3,'003','王五','女');

第四步:编写Student实体类

提示 :这里使用到lombok

  • /**
  • * 学生实体类
  • * @author xiaowen
  • */
  • @Data
  • @AllArgsConstructor
  • @NoArgsConstructor
  • public class Student implements Serializable {
  •     private static final long serialVersionUID = 1L;
  •      private Integer sid;
  •      private String sno;
  •      private String name;
  •      private String sex;

  • }

第五步:编写Mapper数据层
  • public interface StudentMapper {

  •     /**
  •     * 添加学生信息
  •      * @param student
  •      * @return
  •      */
  •     @Insert("insert into t_student(sno,name,sex) values(#{sno},#{name},#{sex})")
  •     void addStudent(Student student);

  •     /**
  •      * 修改学生信息
  •      * @param student
  •      * @return
  •      */
  •     @Update("update t_student set name=#{name},sex=#{sex} where sno=#{sno}")
  •     void updateStudent(Student student);

  •     /**
  •       * 根据学生编号删除
  •      * @param sno
  •      * @return
  •      */
  •     @Delete("delete from t_student where sno=#{sno}")
  •     void deleteById(String sno);

  •     /**
  •      * 根据学生编号查询
  •      * @param sno
  •      * @return
  •      */
  •     @Select("select * from t_student where sno=#{sno}")
  •     @Results(id = "student",value= {
  •             @Result(property = "sno", column = "sno", javaType = String.class),
  •             @Result(property = "name", column = "name", javaType = String.class),
  •             @Result(property = "sex", column = "sex", javaType = String.class)
  •     })
  •     Student findById(String sno);

  •     /**
  •       * 查询所有学生信息
  •      * @return
  •      */
  •     @Select("select * from t_student")
  •     List<Student> findAll();

第六步:编写Service业务层
  • public interface StudentService {

  •     void addStudent(Student student);
  •     void updateStudent(Student student);
  •     void deleteById(String sno);
  •     Student findById(String sno);
  •     List<Student> findAll();
  • }

第七步:编写Service业务层实现类
  • @Service
  • public class StudentServiceImp implements StudentService {
  •     @Autowired
  •     private StudentMapper studentMapper;
  •     @Override
  •     public void addStudent(Student student) {
  •         studentMapper.addStudent(student);
  •     }

  •     @Override
  •     public void updateStudent(Student student) {
  •         studentMapper.updateStudent(student);
  •     }
  •     @Override
  •     public void deleteById(String sno) {
  •         studentMapper.deleteById(sno);
  •     }
  •     @Override
  •     public Student findById(String sno) {
  •         return studentMapper.findById(sno);
  •     }
  •     @Override
  •     public List<Student> findAll() {
  •         return studentMapper.findAll();
  •     }
  • }

第八步:编写Controller控制层
  • @RestController
  • @RequestMapping("/student")
  • public class StudentController {

  •     @Autowired
  •     private StudentService studentService;

  •     @GetMapping("/findAll")
  •     public List<Student> findAll() {
  •         return studentService.findAll();
  •     }

  •     @GetMapping("/findById/{sno}")
  •     public Student findById(@PathVariable("sno") String sno) {
  •         return studentService.findById(sno);
  •     }

  •     @PostMapping("/save")
  •     public void save(@RequestBody Student student) {
  •         studentService.addStudent(student);
  •     }

  •     @PutMapping("/update")
  •     public void update(@RequestBody Student student) {
  •         studentService.updateStudent(student);
  •     }

  •     @DeleteMapping("/deleteById/{sno}")
  •     public void deleteById(@PathVariable("sno") String sno) {
  •         studentService.deleteById(sno);
  •     }

  • }

第九步:编写启动类
  • @SpringBootApplication
  • @MapperScan("com.xiaowen.mapper")
  • public class SpringBootMyBatisApplication {

  •     public static void main(String[] args) {
  •         SpringApplication.run(SpringBootMyBatisApplication.class, args);
  •     }

  • }




到此,SpringBoot2.x + Mybatis +Druid实现CRUD功能已经完成。

关注公众号


来自群组: java开发组

新浪微博达人勋

6867

积分

1733

帖子

1698

贡献

Rank: 8Rank: 8

积分
6867

社区QQ达人最佳新人活跃会员热心会员

发表于 2019-11-26 20:10:52 | 显示全部楼层
占坑编辑ing

新浪微博达人勋

6824

积分

1703

帖子

1707

贡献

Rank: 8Rank: 8

积分
6824
发表于 2019-11-30 08:28:04 | 显示全部楼层
前排,哇咔咔

新浪微博达人勋

3082

积分

809

帖子

752

贡献

Rank: 8Rank: 8

积分
3082

社区QQ达人

发表于 2019-12-3 02:18:09 | 显示全部楼层
专业抢沙发的!哈哈

新浪微博达人勋

7040

积分

1786

帖子

1731

贡献

Rank: 8Rank: 8

积分
7040

社区QQ达人最佳新人活跃会员热心会员

发表于 2019-12-4 06:32:34 | 显示全部楼层
顶起出售广告位

新浪微博达人勋

6442

积分

1609

帖子

1611

贡献

Rank: 8Rank: 8

积分
6442

社区QQ达人

发表于 2019-12-5 00:57:36 | 显示全部楼层
珍爱生命,果断回帖。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋|手机版|Archiver|Java教程网    

GMT+8, 2019-12-16 21:21 , Processed in 0.378235 second(s), 38 queries .

Powered by Discuz X3.2

© 2001-2013 JAVA教程网

快速回复 返回顶部 返回列表