MySQL04

简介

本文是2021/05/14整理的笔记
赘述可能有点多,还请各位朋友耐心阅读
本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进

使用JDBC调用存储过程

cs = connection.prepareCall("call 存储过程名(?,?,?)");
cs.setString("参数名",);
cs.setString("索引",);

增删改

cs.execute();
cs.getUpdateCount();

查询

rs  = sc.executeQuery();
while(rs.next()){
rs.getString("列名");
}

使用JDBC调用函数

ps = connection.prepareStatement(“select 函数名(?,?)”);
ps.setString(1,值);
rs = ps.executeQuery();
if(rs.next()){

}

MySQL使用字符集

MySQL8默认字符集是utf8mb4 > utf8
character_set_client(客户端)
character_set_connection(连接)
character_set_results(返回结果的字符集)
character_set_server 服务器字符集

预编译SQL

sql注入:原来SQL加:'or1=1 --# 使得不符合条件变成符合条件 原来查不到数据 现在能够查到 用户就能看到敏感数据Statement:暴力拼接字符串 容易造成SQL注入
PrepareStatement在sql中使用?占位符代替值,需要在程序中给?赋值 其他:暴力拼接字符串 自己SQL注入(在?后写or - 1=1)
sql语句每次执行的时候需要先编译再执行 效率低
预编译:提前第一次执行先编译好存储到数据库服务器上,下次执行的时候直接不编译,把客户端传来的参数给数据库服务器即可,执行已经编译好的SQL,不编译,效率高

PrepareStatement和Statement区别

  1. PrepareSatement:预编译sql,把sql语句提前编译好放到数据库服务器上,运行时客户端将?
    所代表的参数传进来,给对应的?赋值.提高效率
  2. Stament:没有?占位符,直接拼接sql语句,不安全.不预先编译sql,每次执行都编译一次,效率
    低下. 推荐用 PrepareStatement.

c3p0数据库连接池

  1. 可重用性高
  2. 效率高
  3. 可扩展性高
  4. c3p0,druid,hikari
  5. c3p0使用步骤
    (1) c3p0-0.9.1.jar
    (2) src下建立c3p0-config.xml
	<?xml version="1.0" encoding="UTF-8" ?>
< c3p0-config >
    < default-config >
        <!--配置JDBC 四个基本属性-->
        < property name="driverClass" >com.mysql.jdbc.Driver< /property >
        < property name="jdbcUrl">jdbc:mysql:///c?userSSL=false< /property >
        < property name="user" >root< /property >
        < property name="password">123456< /property >
    < /default-config >
< /c3p0-config >

(3)静态的成员变量private static DataSource dataSource = new ComboPooledDataSource();
(4)得到连接 connection = dataSource.getConnection();

Dbutils

1. Apache出品的工具包
2. 使用步骤
    1. 拷贝jar包
    2. QueryRunner runner = new QueryRunner(DataSource);
        1. 增删改:int rows = runner.update(sql,参数值,参数值...);
 @Test
    public void testAddDBUtils(){
        try {
            int i = runner.update("ins","燕青",20);
            System.out.println("i = " + i);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testUpdateDBUtils(){
        try {
            int i = runner.update("update person set name=?,age=? where id=?","张瑜",21,6);
            System.out.println("i = " + i);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testDelDBUtils(){
        try {
            int i = runner.update("delete from person where id = ?",6);
            System.out.println("i = " + i);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void testCountDbutils(){
        try {
            Long count = runner.query("select count(*) from person where name like ?", new ScalarHandler<>(), "%武%");
            System.out.println("count = " + count.intValue());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    @Test
    public void testListDbutils(){
        try {
            List<Person> list = runner.query("select * from person where name like ?", new BeanListHandler<>(Person.class), "%武%");
            for (Person person : list) {
                System.out.println("person = " + person);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    @Test
    public void testGetByIdQueryDbutils(){
        try {
            Person person = runner.query("select * from person where id = ?", new BeanHandler<>(Person.class), 2);
            System.out.println(person);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

maven:jar仓库

  1. 中央仓库(Center Repository):互联网
  2. 本地仓库(Local Repository):你的电脑上
  3. 坐标:gav唯一确定一个jar在仓库的位置 D:\mymvnrepo\mysql\mysql-connector-java\8.0.23找到mysql.jar
    g:groupId 组织id
    a:artifactId 工程id
    v:version 版本号
  4. 如何在仓库中找某一个jar
    1. groupId
    2. artifactId
    3. version
    4. artifactId-version.jar jar包的命名方式
  5. 如何查询maven坐标https://mvnrepository.com/
    1. 百度:mvnrepo
    2. 选择我是人类
    3. 在搜索栏输入要查询的关键字:mysql
    4. 选择版本号
    5. 拷贝到pom.xml
  6. 配置阿里的镜像仓库
    在C:\Users\具体用户 \ .m2\settings.xml里mirrors节点里面添加子节点mirror节点:
  <mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>        
</mirror>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值