• 【Spring】JdbcTemplate的使用,查询,增、删、改


    数据库名:taobaodb
    在这里插入图片描述
    配置文件:
    在这里插入图片描述

    JdbcTemplate主要提供以下五类方法:

    • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

    • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

    • query方法及queryForXXX方法:用于执行查询相关语句;

    • call方法:用于执行存储过程、函数相关语句。

    1.单条数据查询(可用于登录判断用户名、密码)

    a.获取jsp表单得到的表单信息;

    User user = new User();
    Map<String, String[]> map = request.getParameterMap();
    

    b.将表单信息注入到User类的对象中;

    try {
                BeanUtils.populate(u1,map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    

    c.按user的用户名、密码查询数据库,得到一个对象u2,如果u2不是null,那么u2和user的信息是一致的,也就是表单填的信息正确

    public User findUser(User user) {
            User u=null;
            try{
                u=jt.queryForObject("select userName,userPwd from userinfo where userName=? and userPwd=?",
                        new BeanPropertyRowMapper<User>(User.class),user.getUsername(),user.getUserpwd());
            }catch (Exception e){
            }
    
            return u;
        }
    

    如果返回的u为null说明数据库中没有查询到符合条件的信息
    单元测试代码:

    import javax.sql.DataSource;
    import java.io.IOException;
    import java.util.Properties;
    
    public class MySql {
        @Test
        public void addData(){
            Properties p=new Properties();//配置文件对象
            /*加载配置文件
            MySql.class当前类的class文件,getClassLoader类的加载器,getResourceAsStream获取资源流*/
            try {
                p.load(MySql.class.getClassLoader().getResourceAsStream("druid.properties"));
                //创建连接池
                DataSource ds = DruidDataSourceFactory.createDataSource(p);
                JdbcTemplate jt=new JdbcTemplate(ds);
                User user=new User();
                user.setUserName("Tom");
                user.setUserPwd("666666");
                //查询(单条)
                try{ //如果数据库中没有查询到此条数据会报错,try catch一下
                    User u2 =
                        jt.queryForObject(
                                "select userName,userPwd from userinfo where userName=? and userPwd=?",
                                new BeanPropertyRowMapper<User>(User.class),
                                user.getUserName(),user.getUserPwd());
                    System.out.println(u2);}catch (Exception e){ }
    
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    

    运行结果

    C:javaJDKinjava.exe 
    八月 10, 2019 10:36:41 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
    信息: {dataSource-1} inited
    User{userName='Tom', userPwd='666666'}
    
    Process finished with exit code 0
    

    2.count sum

    String sql="select count(*) from user";
    int count= jdbcTemplate.queryForObject(sql, Integer.class);
    System.out.println(count);
    

    3.多条数据查询

    try{ //如果数据库中没有查询到此条数据会报错,try catch一下
                    RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
                    String sql="select userName,userPwd from userinfo";
                    List<User> users=jt.query(sql,rowMapper);
                    for (User u:users) {
                        System.out.println(u);
                    }
                }catch (Exception e){ }
    
    

    运行结果:

    八月 10, 2019 10:59:10 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
    信息: {dataSource-1} inited
    User{userName='Tom', userPwd='666666'}
    User{userName='Alice', userPwd='666***'}
    User{userName='Alan', userPwd='*6666#'}
    User{userName='Ikun', userPwd='888888'}
    User{userName='Bob', userPwd='123456'}
    User{userName='Olive', userPwd='222223'}
    User{userName='Oreo', userPwd='233233'}
    
    Process finished with exit code 0
    

    3.插入数据(可用于注册)

    A.插入单条数据

    try{
    	String sql="insert into userinfo (userName,userPwd,typeId,userStatus) values (?,?,?,?)";
    	int count= jt.update(sql, new Object[]{"孙悟空","87654321",3,"齐天大圣正常"});
        System.out.println("成功插入数据,影响行数:"+count);
     }catch (Exception e){ }
    

    运行结果

    八月 10, 2019 11:10:58 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
    信息: {dataSource-1} inited
    成功插入数据,影响行数:1
    
    Process finished with exit code 0
    
    

    在这里插入图片描述
    B.批量插入

    String sql="insert into userinfo (userName,userPwd,typeId,userStatus) values (?,?,?,?)";
    
    List<Object[]> batchArgs=new ArrayList<Object[]>();
    batchArgs.add( new Object[]{"孙行者","1111111",3,"正常"});
    batchArgs.add( new Object[]{"者行孙","8222221",3,"大圣正常"});
    
    jt.batchUpdate(sql, batchArgs);
    

    在这里插入图片描述

    4.删除数据

    //删除userId为8,9的数据
    String sql="delete from userinfo where userId=? or userId=?";
    jt.update(sql,9,8);
    

    在这里插入图片描述

    5.修改(更新)数据

    String sql="update userinfo set userStatus=? where userName=?";
     jt.update(sql,"者行孙异常","者行孙");
    

    在这里插入图片描述

    String sql="update userinfo set userStatus=? where userName=?";
    jt.update(sql,new Object[]{"Objec方式修改","者行孙"});
    

    在这里插入图片描述

  • 相关阅读:
    一起采坑redis(1)--- Redis Save 与 BGSAVE 的区别
    logstash系列一使用logstash迁移ES数据
    MHA+Atlas+mysql一主一从开启gtid安装配置与实验
    innodb log file size 配置估算以及修改
    linux 硬盘速度测试
    YCSB-压测
    mysql 5.7配置文件参数详解
    mysql 批量插入数据存储过程
    int unsigned实验
    mongodump 备份
  • 原文地址:https://www.cnblogs.com/BIG-BOSS-ZC/p/11807340.html
Copyright © 2020-2023  润新知