• 软工实训-- 学习回顾1


    学习回顾 

    mysql 使用

    1.sql 文的使用(增、删、改、查询)

         创建数据库    mybatis

       a1. 表的创建   保存的表名  userinfo

    userid

    int

    11

    选中

    username

    char

    20

    pwd

    char

    20

            导出的sql 文          

           CREATE TABLE `userinfo` (

            `userid` int(11) NOT NULL auto_increment, 

             `username` char(20) default NULL,

             `pwd` char(20) default NULL,

              PRIMARY KEY  (`userid`)       )

    a2.查询

    Select * from userinfo    where  username = ‘张三’

    2.JDBC  的使用 (回顾)

    3.Mybatis 配置及使用 (重点)

    下载一个jdk1.7(推荐使用)  或者 1.6  1.8

    配置环境变量   把如下地址

    C:Program FilesJavajdk1.7.0_79in    32位系统

    C:Program Files (X86)Javajdk1.7.0_79in

    检查java 版本

    Win+R   输入   cmd   

    再输入  java   -version

    部分代码:

    DROP TABLE IF EXISTS `userinfo`;
    CREATE TABLE `userinfo` (
      `userid` int(11) NOT NULL auto_increment,
      `username` char(20) default NULL,
      `pwd` char(20) default NULL,
      PRIMARY KEY  (`userid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of userinfo
    -- ----------------------------
    INSERT INTO `userinfo` VALUES ('1', '张三', '123');
    INSERT INTO `userinfo` VALUES ('2', '里斯', 'qwe');
    INSERT INTO `userinfo` VALUES ('3', '王五', 'asd');

    Userinfo.Java:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <!--  namespace:命名空间     在使用的时候,需要适用到它  -->
    <mapper namespace="dry">
        
        <!-- 替代语句 -->
        <sql id="cols">
            userid,username,pwd
        </sql>
        <!-- 查询所有信息 -->
        <!--
            resultType:  返回类型,适用  Userinfo 实体类作为接受返回的类型
            <include refid="cols"/>   可以在sql文中引用  已经定义过的sql片段
         -->
        <select id="listAll" resultType="cn.neusoft.mybatis.pojo.Userinfo">
            select <include refid="cols"/> from userinfo
        </select>
        <!-- 查询单个用户  根据id 进行查询  -->
        <!--
           parameterType:输入参数类型
           #{userid} 需要和实体类对应    
         -->
        <select id="getById" parameterType="integer" resultType="aliasesUser">
            select <include refid="cols"/> from userinfo
            where userid=#{userid}
        </select>
        
        <!-- 用户插入 -->
        <!-- cn.neusoft.mybatis.pojo.Userinfo  这个实体类 我们在 sqlMapConfig.xml
                     里面给它定义 了别名 aliasesUser
                     因此 aliasesUser 替代了Userinfo 这个实体类
         -->
        <insert id="addUser" parameterType="aliasesUser">
            insert into userinfo(userid,username,pwd) values (#{userid},#{username},#{pwd})
        </insert>
        <!-- 更新一个用户信息 根据用户名修改用户密码-->
        <update id="updateOne" parameterType="aliasesUser">
            update userinfo set pwd=#{pwd} where username=#{username}
        </update>
        <!-- 删除用户 -->
        <delete id="deleteOne" parameterType="aliasesUser">
           delete from userinfo where username=#{username}
        </delete>
    </mapper>

    UserinfoDao.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();
        //根据用户名查询 个人信息(必做)由于实际情况 ,1个用户只会对应1个用户,因此只能查到一条记录
        //所以 ,可以不使用list  而直接使用Userinfo  作为方法类型
        public Userinfo findByUsername(String username);// 用list的方法:public List<Userinfo> findByUname(String username);
        //选做  实现如下分页查询方法
        //select * from  userinfo limit pageSize(pageNo-1),pageSize;
        public List<Userinfo> findByPage(int pageSize,int pageNo);
    }

    UserinfoDaoImpl.Java

    package cn.neusoft.mybatis.dao;

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

    import javax.xml.transform.Result;

    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()在本方法中对应第一个问号
            //         useinfo.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需要重复修改使用,那么就会在循环体中多次使用
                //Useinfo
                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 findByUsername(String username) {
        // TODO Auto-generated method stub
        String sql="select * from userinfo where username = ?";
        /*   Object[] obj = new Object[]{username};
         *   username 是String 类型的话 ,做sql拼接的时候会自动加上""
         *   如果表中是数字类型, 可能导致"" 不识别
         *   这个时候 ,一种情况可以适用Integer Long转换一下数字
         *   或者sql文进行拼接 进行解决
         *   sql拼接示例:updateUser(Userinfo userinfo) 方法中
         * */
        Object[] obj = new Object[]{username};
        //把sql文 查询结果 返回给ResultSet对象
        ResultSet rs =Dbutils.executeQuery(sql, obj);
        Userinfo userinfo =new Userinfo();
        try {
            while(rs.next()){
                //由于查询所有信息, 意味着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) {
        // TODO Auto-generated method stub
        List<Userinfo> list = new ArrayList<Userinfo>();
        //select * from  userinfo limit pageSize*(pageNo-1),pageSize;
        //select * from  userinfo limit ?*(?-1),?   这句可以通过以下方式实现
        int i =pageSize*(pageNo-1);
        String sql="select * from userinfo limit ?,? ";
        Object[] obj =new Object[]{i,pageSize};
        //把sql文 查询结果 返回给ResultSet对象
        ResultSet rs =Dbutils.executeQuery(sql, obj);
        
        try {
            while(rs.next()){
                //由于查询所有信息, 意味着Userinfo需要重复修改使用,那么就会在循环体中多次使用
                //Useinfo
                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;
    }


    }

    待续。。。。。。

  • 相关阅读:
    第四章:活动图
    makefile
    C语言中,头文件和源文件的关系(转)
    第三章:用例图
    第二章:建模基础
    shell编程:if语句
    shell编程:for循环
    shell基础:数值运算与运算符
    shell基础:预定义变量
    图片异步加载的几种实现方案
  • 原文地址:https://www.cnblogs.com/dingry11-96/p/7099715.html
Copyright © 2020-2023  润新知