Spring Boot之集成Jdbc Template、MyBatis、Spring Data JPA

news/2024/5/19 1:38:18 标签: spring boot, java, mybatis, jpa, jdbc

Spring Boot之集成Jdbc Template、MyBatis、Spring Data JPA

  • 一、Spring Boot集成Jdbc Template
    • 1.引入依赖
    • 2.添加application.properties配置
    • 3.接口及其实现
    • 4.执行测试
  • 二、Spring Boot集成MyBatis
    • 1.引入依赖
    • 2.配置数据源
    • 3.加入MyBatis配置
    • 4.创建Mapper接口
      • 1.使用xml方式
      • 2.使用注解方式
    • 5.配置Mapper映射文件
    • 6.引导类加上包扫描
    • 7.创建UserController
    • 8.执行测试
    • 9.集成mybatis-pagehelper分页插件
  • 三、Spring Boot集成Spring Data JPA
    • 1.添加依赖
    • 2.配置数据库
    • 3.配置Jpa
    • 4.创建实体并配置实体
    • 5.编写UserRepository
    • 6.执行测试

一、Spring Boot集成Jdbc Template

官方文档:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html

1.引入依赖

java">	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.4.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.49</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

2.添加application.properties配置

java">spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.接口及其实现

java">public interface UserService {
	public void insertUser();
}

@Service
public class UserServiceImpl implements UserService {
	
	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Override
	public void insertUser() {
		jdbcTemplate.update("insert into user values(null,?,?);","小白",20);
	}
}

4.执行测试

java">@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class Test {

    @Autowired
    private  UserService userService;

    @org.junit.Test
    public void test(){
        userService.insertUser("小白",20);
    }
}

二、Spring Boot集成MyBatis

1.引入依赖

java">	 <!--mybatis集成依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.2.2</version>
        </dependency>

        <!--MySQL-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

2.配置数据源

在application.properties中加入如下配置

java">spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

3.加入MyBatis配置

在application.properties中加入如下配置:

java">#加载Mybatis映射文件
mybatis.mapper-locations=classpath:cn/ybzy/mapper/*Mapper.xml
	
#pojo别名扫描包
mybatis.type-aliases-package=cn.ybzy.model

4.创建Mapper接口

使用注解标注,2选其一

1.接口上需要加上@Mapper注解,标注该接口属于MyBatis接口

2.在启动类 or 配置类添加@MapperScan(basePackages = "cn.ybyz.mapper") 指定包扫描

1.使用xml方式

使用xml方式需要在application.yml中进行mybatis的配置,需要结合第3点与第5点

java">@Mapper
public interface UserMapper {
    List<User> getAll();
}

2.使用注解方式

简单的语句只需要使用@Insert、@Update、@Delete、@Select这4个注解即可,动态SQL语句需要使用@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider等注解。

具体可参考MyBatis官方文档:https://mybatis.org/mybatis-3/

java">@Mapper
public interface UserMapper {
	@Insert("insert into user(tb_name,tb_sex) values(#{name},#{sex})")
	int add(User user);
	
	@Update("update user set tb_name=#{name},tb_sex=#{sex} where id=#{id}")
    int update(User user);
	
	@Delete("delete from user where id=#{id}")
    int deleteById(String id);
	
	@Select("select * from user where id=#{id}")
	@Results(id = "user",value= {
		 @Result(property = "id", column = "id", javaType = Long.class),
         @Result(property = "name", column = "tb_name", javaType = String.class),
         @Result(property = "sex", column = "tb_sex", javaType = String.class)
	})
    Student queryUserById(String id);
}

5.配置Mapper映射文件

src\main\resources\mapper路径下加入UserMapper.xml配置文件

java"><?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="cn.ybzy.mapper.UserMapper" >
    <!--查询所有-->
    <select id="getAll" resultType="user">
          select * from user
    </select>
</mapper>

6.引导类加上包扫描

java">@SpringBootApplication
@MapperScan(basePackages = "cn.ybyz.mapper")
public class Application {

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

7.创建UserController

java">@RestController
@RequestMapping(value = "/user")
public class UserController {
    @Autowired
    private UserMapper userMapper;
    @RequestMapping(value = "/getAllUser")
    public Object getAllUser(){
        List<User> userList = userMapper.getAll();
        return userList;
    }
}

8.执行测试

在这里插入图片描述

mybatispagehelper_192">9.集成mybatis-pagehelper分页插件

原理:在查询前使用分页插件,统一拦截sql,为其提供分页功能

添加依赖

java">		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.12</version>
		</dependency>

配置yml

# 分页插件配置
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true

分页数据封装对象

java">public class PageResult {
	// 当前页数
	private int page;
	// 总页数	
	private int total;
	// 总记录数
	private long records;
	// 每页显示的内容
	private List<?> rows;	
}

使用分页插件

将查询数据封装到分页数据封装对象并返回
java">     /**
         * page: 第几页
         * pageSize: 每页显示条数
         */
        PageHelper.startPage(page, pageSize);

        List<User> list = UserMapper.getAll();
        
        PageInfo<?> pageInfo = new PageInfo<>(list);
        PageResult pageResult = new PageResult();
        pageResult.setPage(page);
        pageResult.setRows(list);
        pageResult.setTotal(pageInfo.getPages());
        pageResult.setRecords(pageInfo.getTotal());
        return pageResult;

三、Spring Boot集成Spring Data JPA

1.添加依赖

java"><!-- 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>
</dependency>

2.配置数据库

java">#MYSQL配置:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

3.配置Jpa

java">#JPA配置:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy

4.创建实体并配置实体

java">@Entity(name = "tb_user"))
public class User{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    private String name;
}

5.编写UserRepository

java">public interface UserRepository extends JpaRepository<User,Long>{

    public List<User> getAll();

}

6.执行测试

java">@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application .class)
public class JpaTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test() {
        List<User> userList = userRepository.getAll();
        for (User user : userList) {
            System.out.println("user = " + user);
        }
    }
}

http://www.niftyadmin.cn/n/876503.html

相关文章

基于XML应用MyBatis 自用解析

基于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.c…

Spring Boot之集成单、多数据源与单、多事务管理

Spring Boot之集成单、多数据源与单、多事务管理一、配置Druid数据源1.添加Druid依赖2.Druid数据源配置3.Druid监控后台二、配置Mybatis多数据源1.新增数据源配置2.创建数据源配置类3.新增Mapper接口与Service类4.执行测试三、配置Spring Data Jpa多数据源1.配置application.ym…

Spring--IOC 自用解析

IOC 一: 相关概念 耦合: 是对模块间关联度的表示&#xff0c;耦合的强弱取决于模块间接口的复杂性&#xff0c;调用模块的方式以及通过界面传输数据的多少。 耦合度 是指项目模块之间的依赖关系&#xff0c;包括控制关系&#xff0c;调用关系&#xff0c;数据传输关系。模块间…

Spring Boot集成MongoDB,基于MongoRepository与MongoTemplate操作MongoDB

Spring Boot集成MongoDB&#xff0c;基于MongoRepository与MongoTemplate操作MongoDBSpring Boot集成MongoDB1.引入依赖2.配置application.yml3.创建User文档对象4.基于MongoRepository的使用5.多条件查询6.编写测试类7.配置启动类基于MongoTemplate的使用注入MongoTemplate对象…

Spring--AOP 自用解析

AOP 一: 基础概念 AOP概念 面向切面变成&#xff0c;通过预编译的方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续&#xff0c;是Spring的另一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离&#xff0c;从而使业务逻辑各部分之间的耦合度降低&…

Spring Boot之线程异步调用与线程池的使用

Spring Boot之线程异步调用与线程池的使用一、异步调用EnableAsync开启异步调用创建异步/同步方法Async标识异步方法异步方法测试同步方法测试二、线程池的使用使用默认线程池配置对线程池参数配置对异步调用的优化多线程任务执行耗时统计线程池定时任务的使用三、异步回调异步…

Sring--事务控制(附整合junit) 自用解析

Spring中的事务控制 Spring提供了一组事务控制的接口&#xff0c;该接口在spring-tx-5.2.4.RELEASE <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.4.RELEASE</version> <…

Spring Cloud之微服务注册中心Consul

Spring Cloud之微服务注册中心Consul一、Consul概述安装及使用Consul二、SpringCloud集成ConsulA、服务生产者添加依赖配置application.properties提供服务启动测试B、消费服务者添加依赖坐标创建调用接口配置application.properties开启FeignClient测试三、Consul配置中心支持…