SpringBoot整合

整合JDBC


1.配置application.yml文件

server:
    port: 8080
spring:
    application:
        name: springboot-jdbc
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver    #有两个Driver选项,数据库8.0以上选目前这个,以下选另一个
        password: root
        url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&Unicode=true&characterEncoding=utf-8
        username: root

2.测试类中链接数据源

class SpringbootJdbcApplicationTests {

    @Autowired
    private DataSource dataSource;  //数据源
    @Test
    void contextLoads() {
        //查看默认的数据源  hikari (最快数据源)
        System.out.println(dataSource.getClass()); //class com.zaxxer.hikari.HikariDataSource
    }

}

  hikari:最快数据源,(连接池)不需要依赖,已经在springBoot中包含了 :

DataSource

 3.测试好后,开始写代码(增删改查)

先创建一个Controller包,在其中创建一个类

JdbcTemplate :是数据库的模板

它里面封装了好多方法(增删改查等)

@RestController         //不需要页面所以用这个
public class JDBCController {
    @Autowired
    private JdbcTemplate jdbcTemplate;      //简化jdbc的  数据库模板

    //查询
    @GetMapping("/userList")
    public List<Map<String,Object>> mapList(){          //不需要实体类直接查
        String sql = "select * from user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;  //前端返回的就是JSON
    }

    //新增
    @GetMapping("/addUser")
    public String addUser(){
        String sql = "insert into user(id,name,pwd) values (5,'风暴豹','999')";
        jdbcTemplate.update(sql);
        return "OK";
    }

    //修改
    @GetMapping("/updateUser/{id}")
    public String updateUser(@PathVariable("id") Integer id){
        String sql = "update user set name=?,pwd=? where id ="+id;
        //封装
        Object[] obj = new Object[2];
        obj[0] = "冯宝宝一号";
        obj[1] = "zz";
        jdbcTemplate.update(sql,obj);
        return "OK";
    }

    //删除
    @GetMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") Integer id){
        String sql = "delete from user where id = ?";
        jdbcTemplate.update(sql,id);
        return "OK";
    }


}

整合jpa (通过代码在指定的数据库中新建表)

jpa是能让对象快速映射到关系型数据库的技术规范,可以用代码生成数据库中的表

1.创建项目,勾选依赖

2. 配置application.yml文件

server:
    port: 8080
spring:
    application:
        name: springboot-jpa
    devtools:
        restart:
            enabled: false
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
        hikari: # 最快数据源
            username: root
            password: root
    jpa:
        hibernate:
            ddl-auto: update   # 第一次创建表  后面update   每次重启项目都会新建表
        show-sql: true

 3.创建一个pojo包,写一个实体类User

@Entity  //该注解声明一个实体类  与数据库的表对应

4.创建一个mapper包,创建实体类的接口

去继承 JpaRepository<User,Long>这个接口(只有继承它,才能在数据库中建立表)


5.创建service层,写服务层的接口

在写它的实现类

6.创建controller包,新建一个controller类

点击运行以后可以在指定的数据库中创建一个表


整合mybatis

1.创建项目,勾选依赖

2.pojo中创建实体类 

3.配置application.yml文件 

 4.在mapper中新建一个接口(链接数据库)

@Mapper注解:

使用:直接在接口类上使用,包是:org.apache.ibatis.annotations.Mapper

作用:为有此注解的接口生成动态代理类,并且注入到spring容器中。

@MapperScan注解:

使用:在启动类上配置,配置的是持久层接口的包路径,标注批量生成此包下的接口的动态代理类,并且注入到容器中。

他俩一起使用;

1、只使用@Mapper注解,不使用@MapperScan注解。会扫描@Mapper注解所在接口,生成动态代理类,注入到Spring容器中。

2、只使用@MapperScan注解,不使用@Mapper注解。会扫描@MapperScan注解配置的包下面的接口生成动态代理类,注入到Spring容器中。

3、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中有配置包路径,那么可以正常使用。

4、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中没有配置包路径,那么会报错,解决办法,就是在@MapperScan注解中配置正确路径下的包即可。

@Repository    //交给spring管理装配

5.写实现语句或xml文件

两种方式

1.
 

2. 

 注意:pom.xml文件中要加入两个依赖

        <!--外部数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

        <!--springboot mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>


6.正常写服务层的接口和实现类

7.写controller层

注意:在主启动程序中添加 @MapperScan注解(扫描@mapper注解所在的路径)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值