zoukankan      html  css  js  c++  java
  • Java框架spring 学习笔记(十五):操作MySQL数据库

    新建一个工程,添加对数据库的支持

    下载mysql驱动包 mysql-connector-java-5.1.7-bin.jar,快捷键ctrl+alt+shift+s,添加jar包到工程

    编写JdbcTemplateDemo.java

      1 package com.jdbc;
      2 
      3 import org.junit.Test;
      4 import org.springframework.jdbc.core.JdbcTemplate;
      5 import org.springframework.jdbc.core.RowMapper;
      6 import org.springframework.jdbc.datasource.DriverManagerDataSource;
      7 
      8 import java.sql.*;
      9 import java.util.List;
     10 
     11 public class JdbcTemplateDemo {
     12     //1 增加操作
     13     @Test
     14     public void add() {
     15         //设置数据库信息
     16         DriverManagerDataSource dataSource = new DriverManagerDataSource();
     17         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
     18         dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
     19         dataSource.setUsername("root"); //用户名
     20         dataSource.setPassword("xxxxxx"); //密码
     21 
     22         //创建jdbcTemplate对象,设置数据库
     23         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
     24 
     25         //sql语句
     26         String sql = "INSERT INTO User VALUES(?,?)";
     27 
     28         //调用jdbcTemplate对象里面的update方法实现插入操作
     29         int rows = jdbcTemplate.update(sql, "Lucy", "250");
     30         System.out.println(rows);
     31     }
     32 
     33     //2 删除操作
     34     @Test
     35     public void delete() {
     36         //设置数据库信息
     37         DriverManagerDataSource dataSource = new DriverManagerDataSource();
     38         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
     39         dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
     40         dataSource.setUsername("root"); //用户名
     41         dataSource.setPassword("xxxxxx"); //密码
     42 
     43         //创建jdbcTemplate对象,设置数据库
     44         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
     45 
     46         //sql语句
     47         String sql = "DELETE FROM user WHERE username=?";
     48 
     49         //调用jdbcTemplate对象里面的update方法实现删除操作
     50         int rows = jdbcTemplate.update(sql, "Lucy");
     51         System.out.println(rows);
     52     }
     53 
     54     //3 修改操作
     55     @Test
     56     public void update() {
     57         //设置数据库信息
     58         DriverManagerDataSource dataSource = new DriverManagerDataSource();
     59         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
     60         dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
     61         dataSource.setUsername("root"); //用户名
     62         dataSource.setPassword("xxxxxx"); //密码
     63 
     64         //创建jdbcTemplate对象,设置数据库
     65         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
     66 
     67         //sql语句
     68         String sql = "UPDATE user SET password=? WHERE username=?";
     69         //调用jdbcTemplate对象里面的update方法实现操作修改方法
     70         int rows = jdbcTemplate.update(sql, "111111", "Lucy");
     71         System.out.println(rows);
     72     }
     73 
     74     //4 查询操作
     75     //4.1查询有多少记录
     76     @Test
     77     public void findCount() {
     78         //设置数据库信息
     79         DriverManagerDataSource dataSource = new DriverManagerDataSource();
     80         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
     81         dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
     82         dataSource.setUsername("root"); //用户名
     83         dataSource.setPassword("xxxxxx"); //密码
     84 
     85         //创建jdbcTemplate对象,设置数据库
     86         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
     87 
     88         //sql语句
     89         String sql = "SELECT count(*) FROM user";
     90         //调用jdbcTemplate对象里面的queryForObject 方法得到记录数
     91         //queryForObject 查询返回某一个值,第一个参数,第二个参数返回类型
     92         int count = jdbcTemplate.queryForObject(sql, Integer.class);
     93         System.out.println("一共查询到" + count + "条记录");
     94     }
     95 
     96     //4.2查询返回对象,jdbc原始操作
     97     @Test
     98     public void findObject() {
     99         //创建连接对象
    100         Connection conn = null;
    101         //创建预编译对象
    102         PreparedStatement psmt = null;
    103         //创建结果集对象
    104         ResultSet rs = null;
    105 
    106         //加载驱动
    107         try {
    108             Class.forName("com.mysql.jdbc.Driver");
    109             conn = DriverManager.getConnection("jdbc:mysql:///test", "root", "xxxxxx");
    110             //编写sql语句,查询表中所有记录
    111             String sql = "SELECT * FROM user WHERE username=?";
    112             //预编译sql
    113             psmt = conn.prepareStatement(sql);
    114             //设置参数值
    115             psmt.setString(1, "Lucy");
    116             //执行sql
    117             rs = psmt.executeQuery();
    118             //遍历结果集
    119             while (rs.next()) {
    120                 //得到返回结果
    121                 String username = rs.getString("username");
    122                 String password = rs.getString("password");
    123                 //放到User对象里面
    124                 User user = new User();
    125                 user.setUsername(username);
    126                 user.setPassword(password);
    127                 //输出查询结果
    128                 System.out.println(user);
    129             }
    130         } catch (Exception e) {
    131             e.printStackTrace();
    132         } finally {
    133             try {
    134                 //关闭数据库
    135                 rs.close();
    136                 psmt.close();
    137                 conn.close();
    138             } catch (SQLException e) {
    139                 e.printStackTrace();
    140             }
    141         }
    142     }
    143 
    144     //4.3查询返回对象
    145     @Test
    146     public void findObject1() {
    147         //设置数据库信息
    148         DriverManagerDataSource dataSource = new DriverManagerDataSource();
    149         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
    150         dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
    151         dataSource.setUsername("root"); //用户名
    152         dataSource.setPassword("xxxxxx"); //密码
    153 
    154         //创建jdbcTemplate对象,设置数据库
    155         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    156 
    157         //sql语句 根据username查询
    158         String sql = "SELECT * FROM user WHERE username=?";
    159 
    160         //查询返回对象,第一个参数sql语句,第二个参数是RowMapper接口,需要自己写类做数据封装,第三个参数是可变参数
    161         User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom");
    162         System.out.println(user);
    163     }
    164 
    165     //4.4查询返回对象List
    166     @Test
    167     public void findList() {
    168         //设置数据库信息
    169         DriverManagerDataSource dataSource = new DriverManagerDataSource();
    170         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
    171         dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
    172         dataSource.setUsername("root"); //用户名
    173         dataSource.setPassword("xxxxxx"); //密码
    174 
    175         //创建jdbcTemplate对象,设置数据库
    176         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    177 
    178         //sql语句 查询所有记录
    179         String sql = "SELECT * FROM user";
    180 
    181         //query第一个参数sql语句,第二个参数是RowMapper接口,需要自己写类做数据封装,第三个参数是可变参数可省略
    182         List<User> list = jdbcTemplate.query(sql, new MyRowMapper());
    183         System.out.println(list);
    184     }
    185 }
    186 //自己写数据实现类
    187 class MyRowMapper implements RowMapper<User> {
    188     public User mapRow(ResultSet rs,int num) throws SQLException{
    189         //1 从结果集里得到数据
    190         String username = rs.getString("username");
    191         String password = rs.getString("password");
    192         //2 把得到的数据放到对象里面
    193         User user = new User();
    194         user.setUsername(username);
    195         user.setPassword(password);
    196         return user;
    197     }
    198 }

    编写User类User.java

     1 package com.jdbc;
     2 
     3 public class User {
     4     private String username;
     5     private String password;
     6 
     7     public void setUsername(String username){ this.username = username; }
     8     public void setPassword(String password){ this.password = password; }
     9     public String getUsername(){ return username; }
    10     public String getPassword(){ return password; }
    11 
    12     @Override
    13     public String toString(){ return "User [username="+username+",password="+password+"]"; }
    14 }

    执行增加数据add(),数据库中添加一个记录。

    执行修改数据update(),修改表中的记录。

    手动增加几条记录

    执行查询有多少记录findCount(),控制台输出

    一共查询到4条记录

    执行查询返回对象findObject(),输出

    User [username=Lucy,password=111111]

    执行查询返回对象findObject1(),输出

    User [username=Tom,password=aaabbbccc]

    执行查询返回对象List findList(),输出

    [User [username=Lucy,password=111111], User [username=Tom,password=aaabbbccc], User [username=Jacky,password=123456], User [username=Lily,password=abccba]]

    执行删除操作 delete(),username为Lucy的记录删除掉了

  • 相关阅读:
    做人方法论之---三省身
    大脑的作用
    SpEL 和 jquery 有点像
    Bootstrap 栅格系统
    JS 详解 Cookie、 LocalStorage 与 SessionStorage
    深度学习 机器学习 人工智能
    信息熵是怎样炼成的 | 纪念信息论之父香农
    最小熵原理(一):无监督学习的原理
    思维的基本形式、信息量与熵
    思维的本质是信息处理的过程
  • 原文地址:https://www.cnblogs.com/zylq-blog/p/7810705.html
Copyright © 2011-2022 走看看