2017年6月短学期培训代码总结 -----JDBC

本次代码主要描述了本地数据库后,使用JAVA语言进行 增 删 改 查,具体代码如下:

接口类代码

package cn.neusoft.mybatis.dao;

import java.util.List;

import cn.neusoft.mybatis.pojo.Userinfo;

public interface UserinfoDao {

//插入用户信息的插入       Userinfo 实体类可以携带  用户信息
    public boolean addUser(Userinfo userinfo);
    //根据  用户姓名   修改   用户密码
    public boolean updateUser(Userinfo userinfo);
    //根据   用户姓名   删除 用户信息
    public boolean deleteUser(String username);
    //查询所有用户信息
    public List<Userinfo>  findAll();
    //根据用户名查询  个人信息 ,根据实际情况一个用户名只会查到一个用户,所以只能查到记录,所以不用list
    public  Userinfo getuser(String username);
    public  Userinfo findByUsername(String username);
    //选做   实现如下分页查询方法    
    //select * from userinfo limit  pageSize(pageNo-1),pageSize;
    public  List<Userinfo> findByPage(int pageSize,int pageNo);
}

方法类代码:

package cn.neusoft.mybatis.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import cn.neusoft.mybatis.jdbc.Dbutils;
import cn.neusoft.mybatis.pojo.Userinfo;

public class UserinfoDaoImpl implements UserinfoDao {

@Override
    public boolean addUser(Userinfo userinfo) {
        //读取Userinfo 实体类的信息,然后把信息插入到数据库
        
        //1.编写sql 语句
        String sql = "insert into userinfo (username,pwd) values (?,?)";
        //2.如果sql 语句中有问号,我们需要对应信息
        //obj 对象中  userinfo.getUsername()在本方法对应第一个问号
        //         userinfo.getPwd()在本方法对应第二个问号
        Object[] obj = new Object[]{userinfo.getUsername(),
                                    userinfo.getPwd()};
        //3.把sql 语句   以及  obj 对象 放入Dbutils  的executeUpdate方法中进行执行
        //注意 ,Dbutils  的executeUpdate方法类型是int 类型的,只能使用int类型接收
        int a = Dbutils.executeUpdate(sql, obj);
        if(0!=a){//如果insert  操作能执行,那么a 的值就不会是0,那么我们认为操作成功,返回true
            return true;
        }
        return false;
    }

@Override
    public boolean updateUser(Userinfo userinfo) {
        // TODO Auto-generated method stub
        String sql  = "update userinfo set pwd=‘"+userinfo.getPwd()+
                "‘ where username=‘"+userinfo.getUsername()+"‘";        
        System.out.println(sql);
        //由于以上sql文我们没有写?  所以呢  不用使用Object[]对象作填充
        int a = Dbutils.executeUpdate(sql, null);
        if(0!=a){
            return true;
        }
        return false;
    }
    @Override
    public boolean deleteUser(String username) {
        // TODO Auto-generated method stub
        String sql = "delete from userinfo where username = ?";
        Object[] obj = new Object[]{username};
        int a = Dbutils.executeUpdate(sql, obj);
        if(0!=a){
            return true;
        }
        return false;
    }
    
    //查询所有用户信息   最终返回一个list  集合
    @Override
    public List<Userinfo> findAll() {
        // TODO Auto-generated method stub
        List<Userinfo> list = new ArrayList<Userinfo>();
        String sql = "select * from userinfo";
        //把sql 文  查询结果返回给  ResultSet 对象
        ResultSet rs = Dbutils.executeQuery(sql, null);
        
        try {
            while(rs.next()){
                //由于查询所有信息,意味着Userinfo需要重复使用,那么就会在循环体中多次使用
                //Userinfo
                Userinfo userinfo =  new Userinfo();
                //把rs 对象中查询到的每一组信息放入Userinfo实体类中
                userinfo.setUserid(rs.getInt("userid"));
                userinfo.setUsername(rs.getString("username"));
                userinfo.setPwd(rs.getString("pwd"));
                list.add(userinfo);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return list;
    }
    
    @Override
    public Userinfo getuser(String username){
        String sql="select * from userinfo where username=‘"+username+"‘";
        ResultSet rs = Dbutils.executeQuery(sql, null);
        Userinfo userinfo =  new Userinfo();
        //把rs 对象中查询到的每一组信息放入Userinfo实体类中
        
        try {
            if(rs.next()){
                
        userinfo.setUserid(rs.getInt("userid"));
        userinfo.setUsername(rs.getString("username"));
        userinfo.setPwd(rs.getString("pwd"));
        
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return userinfo;
    }

@Override
    public Userinfo findByUsername(String username) {
        // TODO Auto-generated method stub
        String sql="select * from userinfo where username=?";
        Object[] obj = new Object[]{username};
        ResultSet rs = Dbutils.executeQuery(sql, obj);
        Userinfo userinfo =  new Userinfo();
        try {
            while(rs.next()){
                //由于查询所有信息,意味着Userinfo需要重复使用,那么就会在循环体中多次使用
                //Userinfo
                //把rs 对象中查询到的每一组信息放入Userinfo实体类中
                userinfo.setUserid(rs.getInt("userid"));
                userinfo.setUsername(rs.getString("username"));
                userinfo.setPwd(rs.getString("pwd"));
            }    
        }catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        return userinfo;
    }
    
    @Override
    public List<Userinfo> findByPage(int pageSize, int pageNo) {
        List<Userinfo> list = new ArrayList<Userinfo>();
        int  i=pageSize*(pageNo-1);
        String sql = "select * from userinfo limit ?,?";
        //把sql 文  查询结果返回给  ResultSet 对象
        Object[] obj = new Object[]{i,pageSize};
        ResultSet rs = Dbutils.executeQuery(sql, obj);
        
        try {
            while(rs.next()){
                //由于查询所有信息,意味着Userinfo需要重复使用,那么就会在循环体中多次使用
                //Userinfo
                Userinfo userinfo =  new Userinfo();
                //把rs 对象中查询到的每一组信息放入Userinfo实体类中
                userinfo.setUserid(rs.getInt("userid"));
                userinfo.setUsername(rs.getString("username"));
                userinfo.setPwd(rs.getString("pwd"));
                list.add(userinfo);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return list;
    }
    }

测试方法代码:

package cn.neusoft.mybatis.test;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Test;

import cn.neusoft.mybatis.dao.UserinfoDao;
import cn.neusoft.mybatis.dao.UserinfoDaoImpl;
import cn.neusoft.mybatis.pojo.Userinfo;

public class UserinfoDaoImplTest {
    
    private UserinfoDao userinfoDao = new UserinfoDaoImpl();
    /*@Test
    public void testAddUser() {
        //将类加载
        UserinfoDao dao = new UserinfoDaoImpl();
        //将  网页上获取的信息   放入   Userinfo  实体类
        Userinfo userinfo = new Userinfo("moucong", "123");
        boolean b = dao.addUser(userinfo);
        if(b){
            System.out.println("注册成功!");
        }else{
            System.out.println("注册失败!");
        }
    }
    
    @Test
    public void testUpdateUser(){
        UserinfoDao dao = new UserinfoDaoImpl();
        Userinfo userinfo = new Userinfo("moucong", "0627");
        boolean b = dao.updateUser(userinfo);
        if(b){
            System.out.println("更新成功!");
        }else{
            System.out.println("更新失败!");
        }
    }
    
    @Test
    public void testDeleteUser(){
        boolean b = userinfoDao.deleteUser("moucong");
        System.out.println(b);
    }
    
    @Test
    public void findAll(){
        List<Userinfo> list = userinfoDao.findAll();
        //打印list  第一个位置的  那一组数据中的  用户名
        System.out.println(list.get(0).getUsername());
        //循环的方式,打印所有用户信息
        for(int i =0;i<list.size();i++){
            System.out.println("~~~~~~~~~~~~~~~~~~~~");
            System.out.println("用户编号:"+list.get(i).getUserid());
            System.out.println("用户姓名:"+list.get(i).getUsername());
            System.out.println("用户密码:"+list.get(i).getPwd());
        }
    }
    
    @Test
    public  void  getuser(){
    Userinfo list = userinfoDao.getuser("moucong");
    System.out.println("用户编号:"+list.getUserid());
    System.out.println("用户姓名:"+list.getUsername());
    System.out.println("用户密码:"+list.getPwd());
}*/
    @Test
    public  void findByPage(){
        List<Userinfo> list=userinfoDao.findByPage(2, 2);
        for(int i =0;i<list.size();i++){
            System.out.println("~~~~~~~~~~~~~~~~~~~~");
            System.out.println("用户编号:"+list.get(i).getUserid());
            System.out.println("用户姓名:"+list.get(i).getUsername());
            System.out.println("用户密码:"+list.get(i).getPwd());
        }
    }
    
    
}

时间: 2024-08-10 23:25:06

2017年6月短学期培训代码总结 -----JDBC的相关文章

2017年6月短学期培训代码总结 -----springMvc

本次代码具体描述了如何使用SpringMVC框架进行对数据库访问 具体代码如下:SpringMVC的配置文件代码 <beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc&q

2017 年 8 月最新中国行政区划代码省市区数据库

中国行政区划代码省市区数据库( 2017年8月2日更新 ),已同步 中华人民共和国民政部 最新版. 专业付费版 专业付费版拥有更多的数据和数据字段,并提供最短 90 天免费更新服务. 专业版包含:名称.拼音.英文.省级.地级别.县级别.路径.政府驻地.级别.类型.人口(万人).面积(平方千米).行政区划代码.邮编 等字段,并囊括了非民政部在册数据. 专业版持续更新,您可以 立即购买 该商品. 免费版 免费版提供 CSV . JSON 两种数据格式,提供 “ 行政区划代码,省级,地级,县级,区号,

2014年至今的博文目录(更新至2017年06月12日)

拓扑学中凝聚点的几个等价定义(2017-06-12 07:51) 江苏省2017年高等数学竞赛本二试题(含解答)(2017-06-10 20:59) 裴礼文数学分析中的典型问题与方法第4章一元函数积分学练习(2017-06-10 11:04) 2017年厦门大学第十四届景润杯数学竞赛试卷(数学类)评分标准(2017-06-05 15:31) 2017年华东师范大学数学竞赛(数学类)试题(2017-06-05 15:28) 裴礼文数学分析中的典型问题与方法第3章一元微分学练习(2017-05-30

2017年6月26日课堂笔记

2017年6月26日 星期一 晴 空气质量:轻度污染 内容:MySQL第一节课: 1.基本概念 1)MySQL: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件. MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表

2017年4月 TIOBE 编程语言排名

2017年4月 TIOBE 编程语言排名 Hack是Facebook 在三年推出的PHP方言,在2017年4月首次进入TIOBE编程语言排行榜前50位. Hack原是Facebook的内部项目,与2014年发布并开源.作为PHP的替代产品,Hack结合了动态语言开发周期短的优势和一些静态语言的核心特点,还借用了一些新语言的特性,比如注释类型和泛型,以便设置类和方法的参数,同时也添加了一些现代编程语言的常见功能. Facebook称使用PHP处理一些常见任务会存在问题,例如偶尔用空对象调用一个方法

短学期第二次心得

短学期的培训课即将要结束了,下周面临的即将是自己实践写代码.在这几天我们又学习了一些新的知识.我们学习了Javaservlet和springmvc.获取页面中输入的信息 request.getParameter("username") username 是对应的网页中input框的 name.WEB-INF文件下的页面不能直接访问,只能通过转发的方式访问 .把输入的用户名,在下一个页面显示,那就需要传值,可以在下一个页面通过EL 表达式  ${uname} 获取.session.sel

2017年8月14日套题记录 | 普及组

写在前面 今天登洛谷发现离Noip剩下88天了??(虽然看起有点久),然后觉得似乎水了一个暑假什么也没做(虽然学了点数据结构和一些奇奇Gaygay的东西),于是打开题库发现去年Long Happy的集训套题我似乎没有提交过,那就一天一套题,顺便码个题解+心得(雾? T2.传作业 题目描述 某十三同学一日上学迟到,此时已经开始上早自习了,所以他只好请同学帮忙把作业传到组长那里.由于刚开学不久,某十三同学还没来得及认识所有同学,所以传作业时只好找熟悉的同学.已知某十三与组长之间有N个他熟悉的同学,并

老男孩教育每日一题-2017年5月9日-vim命令粘贴带#号或注释信息格式会出现混乱情况怎么办

1.题目 老男孩教育每日一题-2017年5月9日-vim编辑器使用知识点:vim命令粘贴带#号或注释信息格式会出现混乱情况,有什么方法进行解决?问题说明:每次复制代码时,如果代码里有 //或# 这样的注释就容易让格式乱掉,显示的内容不整齐,并不是所期望的显示格式. 2.参考答案 原因分析: 是由于vim编辑命令的自动缩进功能所影响,因此粘贴带注释的代码时可以取消自动缩进 问题解决: vim在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉:最初的解决

2017年5月5号课堂笔记

2017年5月5号 星期五 沙尘暴转晴 内容:U2 HTML5第一节课 一.01第一个霸气的网页 1.老师代码: <!DOCTYPE html><html><head lang="en"> <!-- html注释 不安全 用户在网页中查看源代码可以看到 w3c : World wide Web Consortium (万维网联盟) 官网: www.w3.org www.chinaw3c.org w3c标准: 01.结构化标准语言 html xh