Spring数据访问操作1

目录

一、springBoot整合Spring JDBC

1、搭建SpringBoot应用程序

2、加坐标

3、写配置yml文件

4、写代码 实体类

5、测试

解释

queryForObject--查询单一结果集

第一个参数:sql 【?占位符】

第二个参数:映射规则对象【结果集和实体类的行映射对象】

 映射规则:

第三个参数:动态参数【占位符的值】

update()--增删改    

二、yaml文件密码加密 

实现方式:

方式一:druid自带可以对密码加密

方式二:jasypt独立技术

以下讲解方式二:jasypt坐标

1.添加坐标[有版本]

2.生成密文内容

3.修改配置文件yml的账号密码

3.1、将第二步生成的【账号密码】粘贴在yml配置文件中

3.2、将秘钥也配置进去[否则不能正确解密]

4.启动类上加上注解

三、其余内容:


一、springBoot整合Spring JDBC

步骤:

1、搭建SpringBoot应用程序

2、加坐标

<!--JDBC的坐标-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
<!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

3、写配置yml文件

                  ----- 配置数据源[基础版的]

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

注意:springboot未来会帮我们配置数据源

在配置数据源的时候,要加载基本信息,

    springboot会读取yml文件的信息,把信息读到类的属性里面【另一种方式:@Bean 】

4、写代码 实体类

5、测试

@SpringBootTest
class SpringbootData01JdbcApplicationTests {
    @Autowired(required = false)
    JdbcTemplate jdbcTemplate;
    @Test
    void show3() {
        try {
            List<Account> actors = jdbcTemplate.query("select * from Account",new MyRowMapper());
            for (int i = 0; i < actors.size(); i++) {
                Account actor =  actors.get(i);
                System.out.println(actor);
            }
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }
}

解释

springboot看你加入了一个data-starter启动器,它认为你用相关技术,还需要开启相关的自动配置

所以:

帮你造了数据源,JDBCTemplate,还将依赖关系维护好注入容器,供你使用

     这其中使用了模板设计模式以及策略模式

@Autowired(required = false)

解释:required = false 有的话就注入,没有就不注入了,不会报错

                        为了解决------->【idea中如果不写会下面会有红色波浪线】

          因为:有些是在运行期间造出来的

DBCTemplate提供了两类方法[和DBUtil一样也是如此]

    query()---查询

注意: 需要我们自己写映射规则

queryForObject--查询单一结果集

Account account = jdbcTemplate.queryForObject(
             "select * from account where aid =?"
                                ,new MyRowMapper(),11);
第一个参数:sql 【?占位符】
第二个参数:映射规则对象【结果集和实体类的行映射对象】

不需要反复编写映射规则

要实现父类接口RowMapper<Account>

先给泛型【未来映射的实体类的类型】

再重写方法

返回类型【泛型的目标对象】 mapRow(参数:rs结果集)

 映射规则:
public class MyRowMapper implements RowMapper<Account> {
    @Override
    public Account mapRow(ResultSet rs, int rowNum) throws SQLException {
        int aid = rs.getInt("aid");
        String aname = rs.getString("aname");
        int amoney = rs.getInt("amoney");
        Account account = new Account(aid,aname,amoney);
        return account;
    }
}
第三个参数:动态参数【占位符的值】

update()--增删改    

 类似,不在此赘述

二、yaml文件密码加密 

 数据源的密码属于敏感数据,需要加密

实现方式:

方式一:druid自带可以对密码加密

                 (有且只能对密码)

方式二:jasypt独立技术

               【所有的yaml敏感信息都支持】

以下讲解方式二:jasypt坐标

1.添加坐标[有版本]

2.生成密文内容

     通过测试类将明文信息通过jasypt的工具类生成密文内容

@Test
void contextLoads() {

    StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
    EnvironmentPBEConfig config = new EnvironmentPBEConfig();
    // 加密的算法,这个算法是默认的
    config.setAlgorithm("PBEWithMD5AndDES");
    // 加密的密钥,随便自己填写,很重要千万不要告诉别人
    config.setPassword("sun");
    standardPBEStringEncryptor.setConfig(config);
    //自己的密码
    String plainText = "SunR";
    String encrypted_PasswoordText = standardPBEStringEncryptor.encrypt(plainText);
    //自己的账号
    String plainText1 = "root";
    String encrypted_Text = standardPBEStringEncryptor.encrypt(plainText1);

    //输出,复制下来备用
    System.out.println("密码"+encrypted_PasswoordText);
    System.out.println("账号:"+encrypted_Text);

}

3.修改配置文件yml的账号密码

3.1、将第二步生成的【账号密码】粘贴在yml配置文件中

注意:

       要jasypt调用方法解析,(不然不会识别,当原始内容读取)

           放置在ENC函数中

3.2、将秘钥也配置进去[否则不能正确解密]
jasypt:
  encryptor:
    password: sun

完整配置内容代码: 

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
    username: ENC(dpTXja7bX5xPVxF+WcNqNA==)
    password: ENC(Mn9H7TBBsp+tLIJlYkpetQ==)
    type: com.alibaba.druid.pool.DruidDataSource

jasypt:
  encryptor:
    password: sun

4.启动类上加上注解

@EnableEncryptableProperties:开启关于jasypt的相关配置【不需要配置类配置】

 功能才能生效

三、其余内容:

           http://t.csdn.cn/wne3R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值