软工实训-- 学习回顾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 Files\Java\jdk1.7.0_79\bin    32位系统

C:\Program Files (X86)\Java\jdk1.7.0_79\bin

 

检查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;
}


}

待续。。。。。。

posted @ 2017-06-30 17:03  Rylee  阅读(186)  评论(0编辑  收藏  举报