zoukankan      html  css  js  c++  java
  • SpringBoot与数据访问

    一、SpringBoot整合Jdbc

       1、添加依赖

       <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.6.RELEASE</version>
        </parent>
        <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>
            </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>
                <scope>runtime</scope>
            </dependency>
        </dependencies>

    2、配置文件application.properties

    spring.datasource.password=root
    spring.datasource.username=root
    spring.datasource.url=jdbc:mysql://localhost:3306/study
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver

    3、测试类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class JDBCTest {
    
        @Autowired
        private DataSource dataSource;
    
        @Test
        public  void testJdbc() throws SQLException {
            //获取数据源的类
            Class<? extends DataSource> aClass = dataSource.getClass();
            System.out.println(aClass);
            //获取数据源的连接
            Connection connection = dataSource.getConnection();
            System.out.println(connection);
        }
    }

    4:效果

    默认使用的是class com.zaxxer.hikari.HikariDataSource作为数据源,数据源的相关配置都在DataSourceProperties里面;

    自动配置原理:

    org.springframework.boot.autoconfigure.jdbc;

    1、参考DataSourceConfiguration,根据配置创建数据源,默认使用HikariDataSource 连接池;可以使用

          spring.datasource.type指定自定义的数据源类型;

        @ConditionalOnClass(HikariDataSource.class)
        @ConditionalOnMissingBean(DataSource.class)
         //指定数据类型
        @ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.zaxxer.hikari.HikariDataSource", matchIfMissing = true)
        static class Hikari {
    
            @Bean
            @ConfigurationProperties(prefix = "spring.datasource.hikari")
            public HikariDataSource dataSource(DataSourceProperties properties) {
                HikariDataSource dataSource = createDataSource(properties,
                        HikariDataSource.class);
                if (StringUtils.hasText(properties.getName())) {
                    dataSource.setPoolName(properties.getName());
                }
                return dataSource;
            }
    
        } 

    2、SpringBoot默认支持

    org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource

    3、自定数据源类型

        @ConditionalOnMissingBean(DataSource.class)
        @ConditionalOnProperty(name = "spring.datasource.type")
        static class Generic {
               // //使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性
            @Bean
            public DataSource dataSource(DataSourceProperties properties) {
                return properties.initializeDataSourceBuilder().build();
            }
    
        }

    4、DataSourceInitializer:ApplicationListener;

    作用:
    1)、runSchemaScripts();运行建表语句;
    2)、runDataScripts();运行插入数据的sql语句;
    默认只需要将文件命名为:

    schema‐*.sql、data‐*.sql
    默认规则:schema.sql,schema‐all.sql;
    可以使用  
    schema:    
          ‐ classpath:department.sql
          指定位置

    5、操作数据库:自动配置了JdbcTemplate操作数据库

    @RestController
    public class UserController {
     
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
       
        @RequestMapping("/query")
        public Map<String,Object> query(){
            return jdbcTemplate.queryForList("SELECT * FROM tb_user").get(0);
        }
    }

    二、整合Druid数据源

    1、application.yml文件

    spring:
      datasource:
    #   数据源基本配置
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/study
        type: com.alibaba.druid.pool.DruidDataSource
    #   数据源其他配置
        initialSize: 5
        minIdle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true

    2、引入依赖

     <!--druid 依赖-->
            <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
          </dependency>

    3、配置类

    @Configuration
    public class DruidDataSourceConfig {
    
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource getDataSource(){
            return DruidDataSourceBuilder.create().build();
        }
        //配置Durid的监控
        //1、配置一个管理后台的Servlet
        @Bean
        public ServletRegistrationBean statViewFilter(){
            ServletRegistrationBean servletRegistrationBean =
                    new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
            Map<String,Object> initParam = new HashMap<>();
            initParam.put("loginUsername","admin");
            initParam.put("loginPassword","admin");
            initParam.put("allow","");//默认允许访问所有的
            initParam.put("deny","192.168.23.56");//不允许访问的ip
            servletRegistrationBean.setInitParameters(initParam);
            return servletRegistrationBean;
        }
        
        //2、配置一个web监控的filter
        @Bean
        public FilterRegistrationBean webFilterRegistrationBean(){
            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
            filterRegistrationBean.setFilter(new WebStatFilter());
            Map<String,Object> initParam = new HashMap<>();
            initParam.put("exclusions","*.js,*.css,/druid/*");//忽略资源
            filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//拦截所有
            return filterRegistrationBean;
        }
    }

    4、启动主启动类测试

    访问http://localhost:8080/druid

    访问一个路径之后,效果

    三、SpringBoot整合Mybatis

    1、引入依赖

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-parent</artifactId>
            <version>2.0.6.RELEASE</version>
        </parent>
        <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>
            </dependency>
            <!--mybatis起步依赖-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.1.1</version>
            </dependency>
            <!--mysql依赖-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
        </dependencies>

    2、添加数据连接信息

    application.properties

    #mybatis配置信息
    #spring集成Mybatis环境
    #pojo别名扫描包
    mybatis.type-aliases-package=com.yehui.mapper
    #加载Mybatis映射文件
    mybatis.mapper-locations=classpath:mapper/*.xml

     3、创建实体类

    public class User {
        private Integer id;
        private String password;
        private String NAME;
        private int age;
        private String sex;

    4、编写Mapper

    @Mapper
    public interface UserMapper {
        public List<User> selectList();
    }
    注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中
    如果不使用@Mapper注解,可以在启动类上面加上@MapperScan(value = "com.*.mapper")进行批量扫描如下
    //使用MapperScan批量扫描所有的Mapper接口;
    @MapperScan(value = "com.hui.mapper")
    @SpringBootApplication
    public class StartApp {
        public static void main(String[] args) {
            SpringApplication.run(StartApp.class,args);
        }
    } 

     5、编写mapper配置文件

    srcmain esourcesmapper路径下加入UserMapper.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.yehui.mapper.UserMapper">
        <select id="selectList" resultType="com.yehui.entity.User">
            select * from t_user
        </select>
    </mapper>

    6、编写service

    @Service
    public class Uservice {
    
        @Autowired
        private UserMapper userMapper;
    
        public List<User> selectUser(){
            return userMapper.selectList();
        }
    }

    7、编写Controller

    @Controller
    public class UserController {
        @Autowired
        private Uservice uservice;
        @RequestMapping("/selectList")
        @ResponseBody
        public Object selectList(){
            return uservice.selectUser();
        }
    }

    8、测试

    四、springboot整合springjpa

    1、引入依赖

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.6.RELEASE</version>
        </parent>
        <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>
            </dependency>
            <!-- springBoot JPA的起步依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <!--mysql依赖-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
        </dependencies>

    2、编写UserRepository

    public interface UserRepository extends Repository<User,Integer> {
        public List<User> findAll();
    }

    3、编写测试类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class JpaTest {
    
        @Autowired
        private UserRepository userRepository;
        @Test
        public void test01(){
            List<User> all = userRepository.findAll();
            System.out.println(all);
        }
    }
  • 相关阅读:
    eclipse export runnable jar(导出可执行jar包) runnable jar可以执行的
    mave常用指令
    771. Jewels and Stones珠宝数组和石头数组中的字母对应
    624. Maximum Distance in Arrays二重数组中的最大差值距离
    724. Find Pivot Index 找到中轴下标
    605. Can Place Flowers零一间隔种花
    581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
    747. Largest Number At Least Twice of Others比所有数字都大两倍的最大数
    643. Maximum Average Subarray I 最大子数组的平均值
    414. Third Maximum Number数组中第三大的数字
  • 原文地址:https://www.cnblogs.com/cxyyh/p/10630248.html
Copyright © 2011-2022 走看看