springboot整合mybatis,mybatisplus,jpa,druid数据源,jsp模版引擎

1springboot整合jsp模版引擎

创建springboot工程选择几个常见的的依赖进行,例如:lombook和spring web的依赖等,

因为jsp没有集成在srpingboot工程中所以在springboot工程中的pom文件中导入以下jsp依赖:

<dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

然后再点击project Structure 

点击modules,在上面加入web模块,然后项目工程的目录会出现web文件夹,在web文件中创建WEB-INF/view,然后jsp文件就可以放在此文件下。

在yml文件中配置jsp模版的默认访问路径:

spring:
  mvc:
    view:
      prefix: /WEB-INF/view/
      suffix: .jsp

因为:这个路径是写在源码上的。

2springboot整合jpa

2.1在创建springboot工程的时候选择合适的数据库驱动(这是我选择的是mysql的驱动),在选择jpa的依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

2.2创建bean

package com.it.springbootrabbitmq.bean;


import lombok.*;

import javax.persistence.*;

@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Entity //告诉JPA这是一个实体类
@Table(name="role")
public class role {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    String role_id;
    @Column(name = "role_name",length = 25)
    String role_name;
    String role_description;
    String role_state;
}

这里我创建了一个role角色,对应数据库里的role角色表。注意:必须要用

@Entity //这个注解告诉JPA这是一个实体类

@table(name=“role”)告诉jpa这个实体类对应数据库的那张表

@id和@GeneratedValue(strategy = GenerationType.IDENTITY)告诉jpa表的主键和主键的数据类型

@colum就是数据库对应的字段,当然字段名称一样不需要写。

2.3创建dao接口

package com.it.springbootrabbitmq.ee;

import com.it.springbootrabbitmq.bean.role;
import org.springframework.data.jpa.repository.JpaRepository;

public interface roleRepository extends JpaRepository<role,String> {
}

接口继承JpaRepository<role,String>,后面的是bean名和主键数据类型。后面调用这个接口进行,里面定义了单表的一些列操作,当然你也可以在此接口定义一些自己的方法。

这里就不在解释了。

3springboot整合druid数据源

3.1导入druid数据源依赖

 <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.8</version>
        </dependency>

3.2yml文件配置相关参数(包括数据库连接的参数和druid自身的参数)

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/xianmu?useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource #切换数据源
    filters: stat,wall,log4j2



    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

    logging:
      level:
        com.alibaba.druid.filter.logging.Slf4jLogFilter: info

其中type定义了数据源的类型,type上面的是mysql数据库连接信息,type下面的是druid数据源的相关信息,例如:连接处的大小等。

logging:
  level:
    com.alibaba.druid.filter.logging.Slf4jLogFilter: info

这个是进行数据查找时打印执行的sql语句。

3.3配置druid的配置类

package org.example.springbootmybatis.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class druidconfig {


    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }

    //配合druid的监控

    /**
     * 监控地址:http://localhost:8080/druid/login.html
     * 监控请求:http://localhost:8080/query
     * @return
     */
    //1、配置一个管理后台的servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean= new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        Map<String,String> map=new HashMap<>();
        map.put("loginUsername","admin");
        map.put("loginPassword","123456");
        map.put("allow","localhost");//允许本机访问
        map.put("deny","192.168.122.133");//拒绝访问
        bean.setInitParameters(map);
        return bean;
    }
    //2、配置一个监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){

        FilterRegistrationBean bean= new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map<String,String> map=new HashMap<>();
        map.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(map);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return bean;
    }


}
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
    return new DruidDataSource();
}

第一个注解是关键,好耍druid使用那些数据。连接数据库。

下面俩个配置,主要是提供一个网页,里面有一些数据库的相关信息。

4springboot整合mybatis

4.1mybatis介绍

MyBatis(也被称为iBatis)是一个开源的持久层框架,用于将数据库操作与应用程序的业务逻辑分离。它提供了一种简单且灵活的方式来映射数据库表和SQL查询结果到Java对象。

MyBatis 的主要目标是通过使用简单的 XML 或注解配置来实现对数据库的访问,同时提供了强大的动态 SQL 语句的构建能力。它支持多种数据库,包括关系型数据库(如MySQL、Oracle、PostgreSQL等)和非关系型数据库(如MongoDB)。

使用 MyBatis,你可以通过编写 SQL 映射文件或者注解来定义数据库操作,包括插入、更新、删除和查询等。MyBatis 将这些操作与 Java 对象进行映射,使得数据的读写操作变得更加简洁和易于维护。

MyBatis 的核心原理是基于 SQL 映射文件或注解中的配置信息,将 SQL 语句与 Java 方法进行绑定,并通过 JDBC 执行相应的数据库操作。它提供了丰富的功能,如参数映射、结果集映射、动态 SQL、事务管理等,以满足不同场景下的需求。

总结起来,MyBatis 是一个轻量级且易于学习和使用的持久层框架,它通过将数据库操作与应用程序解耦,提供了一种灵活且高效的方式来访问和操作数据库。

4.2导入依赖到pom文件

当然也可以在创建springboot工程的时候选择spring ——mybatis的选项,这样自动导入,如果没有的话要单独导入:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>2.3.1</version>
            <scope>test</scope>
        </dependency>

4.3如果有数据源的话要配置mybatisconfig

package org.example.springbootmybatis.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class mybaticeconfig {

    @Autowired
    private DataSource dataSource;

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        return sessionFactory.getObject();
    }
}

如果没有的话不需要。

4.4创建mapper接口和xml文件(不使用xml文件可以使用注解)

package org.example.springbootmybatis.mapper;


import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.example.springbootmybatis.bean.Student;

import java.util.List;

public interface studentMapepr {

 @Select("select * from role")
    public List<Student> fandall();
}

当然要开启mapper代理:两种方法:

1.在mapper接口上使用@mapper注解,表示这是个mapper代理接口

2.在启动类上使用

@MapperScan(basePackages = "org.example.springbootmybatis.mapper")

扫描mapper接口所以得包。

在接口中写相应的方法就行。可以使用注解,也可以写xml文件,但是必须放在根目录下的mapper中,当然也再yml文件中更改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="org.example.springbootmybatis.mapper.studentMapepr">
    <select id="fandall"  resultType="org.example.springbootmybatis.bean.Student">
        select * from role
    </select>
</mapper>

最后调用这个接口就行。

5.springboot整合mybatisplus

5.1导入mybatisplus的依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.2</version>
        </dependency>

5.2如果要做分页操作配置mybatisplusconfig配置类

package com.it.springbootmybaticeplus.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class mybaticeplusconfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

}

5.3在yml文件中添加数据库连接信息

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xuexi?useSSL=false&characterEncoding=utf8
    username: root
    password: 123456
      #sql:
      #init:
      #schema-locations: classpath:sql/data.sql  # DDL???resources/sql/schema.sql
      #data-locations: classpath:sql/data.sql  # sql???resources/sql/data.sql
    #mode: always


    #type: com.alibaba.druid.pool.DruidDataSource #切换数据源
    #filters: stat,wall,log4j2



    #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

    #logging:
      #level:
         # com.alibaba.druid.filter.logging.Slf4jLogFilter: info


#  security:
#    user:
#      name: zhou
#      password: 123456


mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false
  # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/**.xml
  mapper-locations: classpath:/mapper/**.xml
configuration:
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  map-underscore-to-camel-case: false

这个是不要对我们的表字段进行修改。关闭驼峰命名等。

mapper-locations: classpath:/mapper/**.xml

这个是mapper.xml文件放的位置。前面的我不一一介绍了

5.4mapper接口和xml文件等

这个内容和mybatis大致一样唯一不一样的是创建接口的时候要继承一个类

BaseMapper<role>接收的是表名也就是bean。
package com.it.springbootmybaticeplus.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.it.springbootmybaticeplus.bean.role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface roleMapper extends BaseMapper<role> {

    @Select("select * from role ${ew.customSqlSegment}")
    public Page<role> selectByPrimaryKey(Page<role> page,
                                         @Param(Constants.WRAPPER) QueryWrapper<role> queryWrapper);




   public Page<role> selectPage(@Param("page") Page<role> page,
                             @Param("role_id") String role_id);


}

5.5相关注解解释

使用@Param注解

当以下面的方式进行写SQL语句时:

    @Select("select column from table where userid = #{userid} ")

    public int selectColumn(int userid);

当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以。

    @Select("select column from table where userid = ${userid} ")

    public int selectColumn(@Param("userid") int userid);

当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。

    @Select("select column from table where userid = ${userid} ")

    public int selectColumn(@Param("userid") int userid);

2)不使用@Param注解

不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。

    // 这里id是user的属性

    @Select("SELECT * from Table where id = ${id}")

    Enchashment selectUserById(User user);

5.6Wrapper传参+注解SQL

5.6.1​​​​​​​在接口中创建自定义方法和sql

public interface StudentMapper extends BaseMapper<Student> {
    @Select("select * from student ${ew.customSqlSegment}")
    public Page<Student> selectByPrimaryKey(Page<Student> page, 
@Param(Constants.WRAPPER) QueryWrapper<Student> queryWrapper);

}

创建测试类:

@RequestMapping("/findStudentByWrapper")
@ResponseBody
public Page<Student> findStudentByWrapper(){
    //创建Wrapper对象
    QueryWrapper<Student> wrapper = new QueryWrapper<>();
    //设置查询条件
    wrapper.eq("stu_id", "1001")
            .like("stu_name", "晓春");
    //设置排序条件-可选条件
    //wrapper.orderByAsc("stu_id");
    //设置分页参数-可选条件
    Page<Student> resultPage = new Page<>(1, 10);
    Page<Student> list=studentMapper.selectByPrimaryKey(resultPage,wrapper);
    return list;
}

还有一种方式(不常用):

@RequestMapping("/findStudentByWrapper")
@ResponseBody
public IPage<Student> findStudentByWrapper(){
    /*//创建Wrapper对象
    QueryWrapper<Student> wrapper = new QueryWrapper<>();
    //设置查询条件
    wrapper.eq("stu_id", "1001")
            .like("stu_name", "晓春");
    //设置排序条件-可选条件
    //wrapper.orderByAsc("stu_id");
    //设置分页参数-可选条件
    Page<Student> resultPage = new Page<>(1, 10);
    Page<Student> list=studentMapper.selectByPrimaryKey(resultPage,wrapper);*/

    //分页查询方式2
    IPage<Student> page = new Page<>(1, 10); // 分页查询
    LambdaQueryWrapper<Student> qw = new LambdaQueryWrapper<Student>()
            .like(Student::getStu_name, "晓春") // 姓名
            .eq(Student::getStu_id, "1001"); // id
    //selectPage是BaseMapper自带方法
    IPage<Student> userPage = studentMapper.selectPage(page, qw);
    return userPage;

好了最后几天就到这里,明天继续介绍springboot整合security和rambbittmq。祝大家生活愉快!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值