zoukankan      html  css  js  c++  java
  • mybatis增删改查

    Author:Marydon
      声明:使用mybatis,本身不需要再写dao的实现类,此处为了保持三层架构的完整性,遂添加了接口dao的实现类
    1.增加
      sql语句-->有默认返回类型,一般是int(表示影响行数的意思)

    <!-- 新增班级 -->
    <insert id="addClass" parameterType="Clazz">
      <!-- 使用序列 -->
      <selectKey keyProperty="cid" order="BEFORE" resultType="int">
        select seq_class1.nextval from dual
      </selectKey>
      insert into class1 values(#{cid},#{cname})
    </insert>

      对应的方法

    /**
     * 新增班级,此处返回值类型int/void 都可以
     */
    public int addClass(Clazz clazz) {
      SqlSession session = super.getSqlSession();
      return session.insert("com.dao.IClassDao.addClass",clazz);
    }

    2.修改
    进行修改,需分两步进行
      步骤一:根据要修改实体的id,将该实体所有信息从数据库中查询出来
        sql语句-->需指定返回值类型

    <!-- 根据id获取班级信息 -->
    <select id="getClassById" parameterType="int" resultType="Clazz">
      select * from class1 where cId=#{cid}
    </select>

      对应的方法

    /**
     * 修改前得先获取该班级的所有信息
     */
    public Clazz getClassById(int cId) {
      SqlSession session = super.getSqlSession();
      return session.selectOne("com.dao.IClassDao.getClassById",cId);
    }

      步骤二:该修改后的实体重新插入数据库中
        sql语句-->需指定参数类型,默认返回类型为int,不用在sql语句声明返回值,否则报错

    <!-- 修改班级信息 -->
    <update id="updateClass" parameterType="Clazz">
      update class1 set cName=#{cname} where cId=#{cid}    
    </update>

      对应的方法

    /**
     * 修改班级信息,此处返回值类型int/void 都可以
     */
    public int updateClass(Clazz clazz) {
      SqlSession session = super.getSqlSession();
      return session.update("com.dao.IClassDao.updateClass",clazz);
    }

    3.查询
      查询主要是按查询条件进行查询:一般分为根据id查询;根据name进行查询(这里表中的字段name可以重复);组合查询;无查询条件查询
      类型一:根据id进行查询
        例子同修改的步骤一
      类型二:根据name进行查询
        sql语句-->需指定参数类型和返回值类型

    <!-- 根据姓名获取学生信息 -->
    <select id="getStudentsBysName" parameterType="String" resultType="Student">
      select * from student1 where sName=#{sname}
    </select>

      对应的方法

    /**
     * 根据姓名获取学生信息
     */
    public List<Student> getStudentsBysName(String sName) {
      SqlSession session = super.getSqlSession();
      return session.selectList("com.dao.IStudentDao.getStudentsBysName",sName);
    }

      小结:类型一和类型二的区别在于:方法的返回值不同,前者的返回值是唯一的,后者的返回值一般是一个集合
      类型三:组合查询
        需指定映射关系及类型-->map的键和值的名字保持一致,并和实体类的属性保持一致,否则运行时会报错

    <parameterMap type="java.util.Map" id="paramUserMap">
      <parameter property="userName" javaType="String"></parameter>
      <parameter property="userPass" javaType="String"></parameter>
    </parameterMap>    

        sql语句-->需指定参数类型和返回值类型

    <!-- id的值对应该类中的方法名 -->
    <select id="getUsersByNamePass" parameterMap="paramUserMap" resultType="User">
      select * from user1 where 1=1
      <if test="userName != null and userName != ''">
        and userName=#{userName}
      </if>
      <if test="userPass != null and userPass != '' ">
      and userPass=#{userPass}
      </if>
    </select>

        对应的方法-->传入的是一个map集合

    /**
     * 组合查询:根据用户名和身份查询用户信息
     */
    public List<User> getUsersByNamePass(Map user) {
      SqlSession session = super.getSqlSession();
      return session.selectList("com.dao.IUserDao.getUsersByNamePass", user);
    }

      类型四:获取表中所有的数据
        sql语句-->需指定返回值类型

    <!-- 获取所有的班级信息 -->
    <select id="getAllClasses" resultType="Clazz">
      select * from class1
    </select>

        对应的方法

    /**
     * 获取所有的班级
     */
    public List<Clazz> getAllClasses() {
      SqlSession session = super.getSqlSession();
      return session.selectList("com.dao.IClassDao.getAllClasses");
    }

    4.删除
      删除分为:单条数据删除和多条数据删除
      类型一:单条数据删除
        sql语句-->需指定参数类型(默认返回int类型)

    <!-- 删除学生信息 -->
    <delete id="deleteStudentBysId" parameterType="int">
      delete from student1 where sId=#{sid}
    </delete>

        对应的方法

    /**
     * 删除学生信息
     */
    public int deleteStudentBysId(int sId) { 
      SqlSession session = super.getSqlSession();
      return session.delete("com.dao.IStudentDao.deleteStudentBysId", sId);
    }

      类型二:删除多条数据--未测试
        sql语句-->需指定参数类型(默认返回int类型)

    <delete id = "delete" parameterType = "java.util.List"> 
      delete from tests where id in 
      <foreach collection="list" item = "item" open="(" separator="," close=")">
        #{item} 
      </foreach> 
    </delete>
  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/6526905.html
Copyright © 2011-2022 走看看