SpringBoot整合JDBC、Mybatis、JPA

9 篇文章 0 订阅
5 篇文章 0 订阅

1、整合JDBC

①引入Jar包

<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-jdbc</artifactId>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<scope>runtime</scope>
	</dependency>

②配置application.yml

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://47.104.95.243:3306/jdbc
    driver-class-name: com.mysql.jdbc.Driver

默认执行sql语句只需要在resources目录下新建文件
schema-.sql、data-.sql
默认规则:schema.sql,schema-all.sql;

可以使用下面的语言指定位置

schema:
   classpath:department.sql

2、整合Druid数据源(先引入jar包)
导入druid数据源

@Configuration
public class DruidConfig {

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

    //配置Druid的监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String,String> initParams = new HashMap<>();

        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问
        initParams.put("deny","192.168.15.21");

        bean.setInitParameters(initParams);
        return bean;
    }


    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);

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

        return  bean;
    }
}

2.整合MyBatis

环境配置
1.创建项目时选择JDBC MyBatis Mysql

<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.3</version>
		</dependency>

步骤:
1)、配置数据源相关属性(见上一节Druid)
2)、给数据库建表
3)、创建JavaBean

4)、注解版整合Mybatis

//指定这是一个操作数据库的mapper
@Mapper
public interface DepartmentMapper {

    @Select("select * from department where id=#{id}")
    public Department getDeptById(Integer id);

    @Delete("delete from department where id=#{id}")
    public int deleteDeptById(Integer id);

    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert("insert into department(departmentName) values(#{departmentName})")
    public int insertDept(Department department);

    @Update("update department set departmentName=#{departmentName} where id=#{id}")
    public int updateDept(Department department);
}

自定义MyBatis的配置规则;给容器中添加一个ConfigurationCustomizer;(适配驼峰命名)

	@org.springframework.context.annotation.Configuration
public class MyBatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer(){
        return new ConfigurationCustomizer(){

            @Override
            public void customize(Configuration configuration) {
                configuration.setMapUnderscoreToCamelCase(true);
            }
        };
    }
}

使用MapperScan批量扫描所有的Mapper接口;

@MapperScan(value = "com.atguigu.springboot.mapper")
@SpringBootApplication
public class SpringBoot06DataMybatisApplication {

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

5)、配置文件版

1.在resources目录下创建mybatis文件夹存放mapper相关配置
1.1.创建mybatis/mybatis-config.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <settings>
        <!--适配驼峰命名法-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

2.创建Mapper接口

package com.rao.springboot.mapper;

import com.rao.springboot.bean.Employee;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

//使用@Mapper 或者 @MapperScan将接口扫描装配到容器中
@Component
@Mapper
public interface EmployeeMapper {
    public Employee getEmployeeById(Integer id);

    public void insertEmp(Employee employee);
}

3.创建Mapper映射文件 mybatis/mapper/EmployeeMapper.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.rao.springboot.mapper.EmployeeMapper">
   <select id="getEmployeeById" resultType="com.rao.springboot.bean.Employee">
       SELECT * FROM employee WHERE id=#{id}
   </select>

    <insert id="insertEmp">
        INSERT  into employee(lastName,email,gender,d_id) VALUE (#{lastName},#{email},#{gender},#{d_id})
    </insert>
</mapper>

4.在application.yml文件中注册配置文件及映射文件的位置

mybatis:
指定mybatis的全局配置文件位置
config-location: classpath:mybatis/mybatis-config.xml
指定mapper文件的位置
mapper-locations: classpath:mybatis/mapper/*.xml

3、整合SpringData JPA

1)、SpringData简介
SpringData为我们提供使用统一的API来对数据访问层进行操作;这主要是Spring Data
Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问
技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取、更新、删除)、查询、
排序和分页的相关操作。
2、统一的Repository接口
RevisionRepository<T, ID extends Serializable, N extends Number & Comparable>:基于乐观
锁机制
CrudRepository<T, ID extends Serializable>:基本CRUD操作
PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD及分页
3、提供数据访问模板类 xxxTemplate;
如:MongoTemplate、RedisTemplate等
4、JPA与Spring Data
1)、JpaRepository基本功能
编写接口继承JpaRepository既有crud及分页等基本功能
2)、定义符合规范的方法命名
在接口中只需要声明符合规范的方法,即拥有对应的功能
3)、@Query自定义查询,定制查询SQL
4)、Specifications查询(Spring Data JPA支持JPA2.0的Criteria查询)
在这里插入图片描述
步骤

定义数据源application.yml

spring:
  datasource:
    url: jdbc:mysql://47.104.95.243/jpa
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

JPA:ORM(Object Relational Mapping)

1.编写一个实体类(Bean)和数据表进行映射,并配置好映射关系

	//使用JPA注解配置映射关系
@Entity  //告诉jap这是一个实体类(和数据表映射的类)
@Table(name = "tbl_user")  //指定和那个数据表进行对应,可以省略。默认是和类名的首字母小写对应

public class User {
    @Id  //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键
    private Integer id;
    @Column(name = "last_name",length = 50)  //这是和数据表对应的一个列,指定列名和长度
    private String lastName;
    @Column  //省略默认列名 就是属性名
    private String email;
  1. 编写一个Dao接口 来操作实体类对应的数据表(Reponsitory)
//继承JpaRepository来完成对数据库的操作  JpaRepository的两个泛型 1.要操作的对象;2.对象中的主键的类型
public interface UserRepostery extends JpaRepository<User,Integer>{
}

3.在application.yml中配置jpa相关属性

spring:
  datasource:
    url: jdbc:mysql://47.104.95.243/jpa
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

  jpa:
    hibernate:
#    更新或创建数据表结构
      ddl-auto: update
#    在控制台中显示SQL
    show-sql: true

4.编写Controller 直接调用接口中的方式实现CRUD

@RestController
public class UserController {
    @Autowired
    UserRepostery userRepostery;
    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        //userRepostery 继承了JpaRepository 中的方法 直接调用即可
        User one = userRepostery.getOne(id);
        return one;
    }
    @GetMapping("/user")
    public User insertUser(User user){
        // 插入一个用户数据
        User save = userRepostery.save(user);
        return save;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值