zoukankan      html  css  js  c++  java
  • Spring Boot 整合MyBatis(1)

    这篇文章介绍如何在Spring boot中整合Mybatis,其中sql语句采用注解的方式插入。后续文章将会介绍,如何使用xml方式。

    SSM SSH框架已经满足轻量级这个需求了,但是对于开发人员而言,它们有个缺点,那就是需要的配置文件文件太多。

    用这些框架写的项目在resource下面你总是能看到一大堆的xml文件,即使后来注解帮助我们减轻了一部分工作量,但对一个需要迅速动手开发的团队而言,这些远远不够。

    针对这些需求,Spring Boot出现了。采用“习惯大于约定”的思想解决了这一难题。不需要任何xml配置文件,我们就可以写出一个web项目。

    当然,并不是说Sping Boot是一种新的出现,在我看来,它只是根据人们日常开发的习惯将Spring SpringMVC进行整合,让它能够快速满足大多数人的需求。

    同时,Spring Boot的缺点也很明显,封装过于良好,细节不为人知。当我们需要“习惯”之外的东西或者出现异常的错误,我们往往束手无策。

    好了,废话不多说了。下面介绍,如何将Spring Boot与MyBatis进行整合。

    步骤一:这个网站中下载初始工程,当然你也可以在eclipse中新建maven web项目。

    步骤二:通过eclipse将该工程导入。

    步骤三:打开pom.xml,里面添加MySQL和MyBatis的依赖。

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            
            <!-- mybatis -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.0</version>
            </dependency>
    
            <!-- mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            
        </dependencies>

    步骤四:准备测试数据

    CREATE TABLE IF NOT EXISTS `student`(
        `id` INT UNSIGNED AUTO_INCREMENT,
        `name` VARCHAR(50) NOT NULL,
        `gender` ENUM('female','male') NOT NULL,
        `stu_id` VARCHAR(50) NOT NULL,
        PRIMARY KEY ( `id` ) 
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    insert into student(name,gender,stu_id) values('Andy','female','01'),('Bruce','male','02'),('Celina','female','03'),('David','male','04');

    步骤五:在Application.properties中添加MySQL的配置信息,并配置数据源信息。

    spring.datasource.url = jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username = root
    spring.datasource.password = root
    spring.datasource.driver-class-name = com.mysql.jdbc.Driver
         @Autowired
            private Environment env;
    
            //destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用.
            @Bean(destroyMethod =  "close")
            public DataSource dataSource() {
                DataSource dataSource = new DataSource();
                dataSource.setUrl(env.getProperty("spring.datasource.url"));
                dataSource.setUsername(env.getProperty("spring.datasource.username"));//用户名
                dataSource.setPassword(env.getProperty("spring.datasource.password"));//密码
                dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
                dataSource.setInitialSize(2);//初始化时建立物理连接的个数
                dataSource.setMaxActive(20);//最大连接池数量
                dataSource.setMinIdle(0);//最小连接池数量
                dataSource.setMaxWait(60000);//获取连接时最大等待时间,单位毫秒。
                dataSource.setValidationQuery("SELECT 1");//用来检测连接是否有效的sql
                dataSource.setTestOnBorrow(false);//申请连接时执行validationQuery检测连接是否有效
                dataSource.setTestWhileIdle(true);//建议配置为true,不影响性能,并且保证安全性。
               
                return dataSource;
            }

    步骤六:编写student表对应的POJO类。

    package com.lkb.demo.domain;
    
    /**
     * student表对应的POJO类
     * @author LKB
     *
     */
    public class Student {
        /**
         * id
         */
        private int id;
        /**
         * 姓名
         */
        private String name;
        /**
         * 性别
         */
        private String gender;
        /**
         * 学号
         */
        private String stuId;
        //get set
        ...
       }

    步骤七:编写Mapper接口。在方法上面添加对应的mybatis注解,这里我是选择,所以添加的是@Select 。

    package com.lkb.demo.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Select;
    
    import com.lkb.demo.domain.Student;
    
    public interface StudentMapper {
        
        /**
         * 查找所有的学生
         * @return
         */
        @Select("select * from student where 1=1")
        public List<Student> selectAll();
    }

    步骤八:编写service接口。

    package com.lkb.demo.service;
    
    import java.util.List;
    
    import com.lkb.demo.domain.Student;
    
    public interface StudentService {
        
        /**
         * 获取所有学生信息
         * @return
         */
        public List<Student> getAllStu();
    }

    步骤九:编写service接口实现类。

    package com.lkb.demo.service.impl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.lkb.demo.domain.Student;
    import com.lkb.demo.mapper.StudentMapper;
    import com.lkb.demo.service.StudentService;
    
    @Service("studentService")
    public class StudentServiceImpl implements StudentService{
        
        @Autowired
        StudentMapper studentMapper;
        
        @Override
        public List<Student> getAllStu() {
            // TODO Auto-generated method stub
            return studentMapper.selectAll();
        }
    
    }

    步骤十:编写controller类。与之前不同的是,这里有一个@RestController 的注解,其实这个注解就是@Controller与@ResponseBody的结合。

    你可以写一个@RestController,也可以按照之前的习惯书写。

    package com.lkb.demo.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.lkb.demo.domain.Student;
    import com.lkb.demo.service.StudentService;
    
    @RestController
    @RequestMapping("/stu")
    public class StudentController {
        
        @Autowired
        StudentService stuService;
        
        /**
         * 获取所有学生
         * @return
         */
        @RequestMapping("/getAll")
        public String getAllStu(){
            List<Student> students = stuService.getAllStu();
            return students.toString();
        }
    }

    步骤十一:编写启动类。下载的项目中已经带有启动类。但是我们仍然要添加mapper的路径,告诉Spring Boot上哪寻找我们的Mapper文件。

    @SpringBootApplication
    @MapperScan("com.lkb.demo.mapper")
    public class DemoApplication{
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }

    步骤十二:在启动类处点击run->run as java application。下面是启动界面。

    步骤十三:在浏览器输入localhost:8080/stu/getAll

     可以看到是有返回数据的。

  • 相关阅读:
    福利贴——爬取美女图片的Java爬虫小程序代码
    select多选 multiple的使用
    Android笔记---点击事件的四种写法
    二叉排序树的插入与删除
    hdu 5269 ZYB loves Xor I &amp;&amp; BestCoder Round #44
    linux 下同步异步,堵塞非堵塞的一些想法
    JavaScript编程随笔
    《从零開始学Swift》学习笔记(Day 51)——扩展构造函数
    What&#39;s Wrong With Hue Oozie Editor?
    2015.7个人反思小结以及兴许规划
  • 原文地址:https://www.cnblogs.com/cuglkb/p/7778391.html
Copyright © 2011-2022 走看看