使用JDBC操作MYSQL数据库

通过JDBC可以直接使用Java编程来操作数据库。

本章以MySQL为例介绍spring boot使用JDBC操作MySQL数据库。

JDBC依赖配置

新建项目,在pom文件中加入JDBC依赖和Mysql依赖。

<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>
			<version>8.0.28</version>
		</dependency>
 

在resources中propertie中的配置数据库信息。

使用默认端口为3306,数据库名称为testdb。

spring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
## DBname=testdb
## database username
spring.datasource.username=root
## database password
spring.datasource.password=your_password
## database driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

创建实体类

创建一个实体类,用作表数据,这里省略set,get方法。

public class User {
    private int id;
    private String user_name;
    private String user_password;

    public User(int id, String user_name, String user_password) {
        this.id = id;
        this.user_name = user_name;
        this.user_password = user_password;
    }

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_password() {
        return user_password;
    }

    public void setUser_password(String user_password) {
        this.user_password = user_password;
    }
}

使用Controller测试

新建一个UserController,加入@RestController注解,在UserController内注入jdbcTemplate。

@RestController
public class UserController {
    @Autowired
    private JdbcTemplate jdbcTemplate;
......
}

数据库操作方法基本上是create,update,retrieve,delete 4种

jdbcTemplate操作数据库基本上分为3种方法:

1.execute方法:

在UserController类中添加新建数据表的方法。

@GetMapping("createTable")//网页地址
    public String createTable() {//execute方法
       
        String sql =
                "CREATE TABLE user(\n" +
                        "id int(11) NOT NULL AUTO_INCREMENT,\n" +
                        "user_name varchar(255) NOT NULL,\n"+
                        "user_password varchar(255) DEFAULT NULL,\n"+
                        "PRIMARY KEY(id)\n"+
                        ") ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;";//列名和表名不需要单引号!!!

        jdbcTemplate.execute(sql);
        return "创建User表成功!";
    }

启动项目,在浏览器访问:http://localhost:8080/createTable

显示成功。数据库中输入 show tables;显示表以及创建成功。

 

update方法

创建方法saveUserSql,直接执行一个插入语句。



@GetMapping("saveUserSql")//update方法
    public String saveUserSql(){
        String sql="insert into user(user_name,user_password) values('dalao','123')";
        int rows=jdbcTemplate.update(sql);
        return "执行成功,影响"+rows+"行。";
    }

重启项目,在浏览器中可以看到.

接着写增删改方法。

//新增方法
    @GetMapping("saveUser")
    public String saveUser(String userName,String password){
        int rows=jdbcTemplate.update("insert into user(user_name,user_password) values(?,?)",userName,password);
        return "执行成功,影响"+rows+"行。";
    }

    //修改方法
    @GetMapping("updateUserPassword")
    public String updateUserPassword(int id,String password){
        int rows=jdbcTemplate.update("UPDATE user set user_password=? where id=?",password,id);
        return "执行成功,影响"+rows+"行。";
    }

    //删除方法
    @GetMapping("deleteUserById")
    public String deleteUserById(int id){
        int rows=jdbcTemplate.update("delete from user where id=?" ,id);
        return "执行成功,影响"+rows+"行。";
    }

jdbc中提供了批处理方法batchUpdate,可以传入SQL和一个批处理的数组。下面的方法可以插入10条数据。

 //批量插入数据方法
    @GetMapping("batchSaveUserSql")
    //http://localhost:8080/batchSaveUserSql
    public String batchSaveUserSql(){
        String sql=
                "insert into user(user_name,user_password) values (?,?)";
        List<Object[]> paramList=new ArrayList<>();
        for(int i=0;i<10;i++){
            String[] arr=new String[2];
            arr[0]="zhangsan"+i;
            arr[1]="lisi"+i;
            paramList.add(arr);

        }
        jdbcTemplate.batchUpdate(sql,paramList);
        return "批量操作更新成功!";
    }

在浏览器上输入地址,显示操作成功。 

 

 

query方法

query方法是有关查询的方法。

创建getUserByUserName方法,用到实体类User,查询一个列表。

 //查询一个列表方法
    @GetMapping("getUserByUserName")
    //http://localhost:8080/getUserByUserName?userName=zhangsan()
    public  List getUserByUserName(String userName){
        String sql="select * from user where user_name=?";
        List<User> list=jdbcTemplate.query(sql,new Object[]{userName},new BeanPropertyRowMapper<>(User.class));
        return list;
    }

重启项目,在浏览器上输入:

http://localhost:8080/getUserByUserName?userName=zhangsan0

得到结果如图所示:

 

使用一个返回Map的方法queryForMap。

 

//查询一个MAP方法
    @GetMapping("getMapById")
    public Map getMapById(Integer id){
        String sql="select * from user where id=?";
        Map map=null;
        try {
           map = jdbcTemplate.queryForMap(sql, id);
        }catch(EmptyResultDataAccessException e){
            return null;
        }
        return map;
    }

在浏览器访问:

http://localhost:8080/getMapById?id=8,结果如下所示:

 

查询一个数据库不存在的数据,在浏览器输入:http://localhost:8080/getMapById?id=80,页面显示为空白,因为返回了null。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用JDBC连接MySQL数据库,你需要进行以下几个步骤: 1. 加载数据库驱动:使用`Class.forName("com.mysql.jdbc.Driver")`加载MySQLJDBC驱动。如果是MySQL 8及以上版本,需要使用`Class.forName("com.mysql.cj.jdbc.Driver")`加载驱动。 2. 获取数据库连接对象:使用`DriverManager.getConnection(url, username, password)`方法获取数据库连接对象。其中,`url`是数据库的连接地址,`username`是数据库的用户名,`password`是数据库的密码。例如,`String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true"`。 3. 进行数据库操作:获取到数据库连接对象后,你可以使用该对象进行数据库的增删改查等操作。 需要注意的是,如果出现`com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server`异常,可能是因为MySQL版本和驱动jar包不对应。请确保使用MySQL版本和驱动jar包是兼容的。 综上所述,使用JDBC连接MySQL数据库的步骤包括加载数据库驱动和获取数据库连接对象。 #### 引用[.reference_title] - *1* *3* [使用JDBC连接MySQL数据库](https://blog.csdn.net/sdafcaxc/article/details/124546043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用JDBC连接MySQL数据库(详解)](https://blog.csdn.net/winner_ch/article/details/105742144)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值