zoukankan      html  css  js  c++  java
  • 用ssm框架简单创建一个增删改查案列

    大方向:
    1.首先要配置.xml文件(总的映射文件,加载后来写的各种xml文件,每一个映射文件都得在这里面加载
    <mappers>
      <!-- 加载映射文件 -->
      <mapper resource="org/lanqiao/mapper/studentMapper.xml"/>
      <mapper resource="org/lanqiao/mapper/studentCardMapper.xml"/>
      <mapper resource="org/lanqiao/mapper/studentClassMapper.xml"/>
    </mappers>)
    以及配置数据库信息,起别名等
    2.Reader reader = Resources.getResourceAsReader("conf.xml") ;
    通过reader去读总的配置文件
    3.SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
    获取sql会话产生工厂,"development"是 指定数据库环境,有开发,测试,实施等几种
    4.SqlSession session = sessionFacotry.openSession() ;
    产生会话,这几步就封装了原来的jdbc的对数据库的操作,所以mybatis是对jdbc的封装

    5.StudentMapper studentMapper = session.getMapper(StudentMapper.class) ;
    StudentMapper是一个java接口文件,里面有各种接口方法,也就是未实现的 如
    Student queryStudentById(int stuno);
    Student queryStudentByIdWithHashMap(int stuno);
    List<Student> queryStudentsWithNosInGrade(Grade grade);
    StudentMapper.class 利用了Proxy动态代理反射生成类文件

    6.Student student = studentMapper.queryStudentByStunoWithConverter(1) ;//接口中的方法->SQL语句
    queryStudentByStunoWithConverter(1)这些方法在studentMapper.xml中具体实现,因为studentMapper会去找他的映射文件,也就是studentMapper.xml文件,这里面实现了方法,写在<select>里
    <select id="queryStudentById"   parameterType="int" resultMap="queryStudentByIdMap" >
      select id,name from student where id = #{id}
    </select>
    1.方法名和studentmapper.xml文件中标签的id值相同
    2.方法的 输入参数 和studentmapper.xml文件中标签的 parameterType类型一致
    3.方法的返回值  和studentmapper.xml文件中标签的 resultType类型一致

    7.System.out.println(student);
     session.close();

    另:
    studentMapper.xml的写法
    <mapper namespace="org.lanqiao.mapper.StudentMapper">
    <!-- namespace:该mapper.xml映射文件的 唯一标识 -->
    <!--查询和删除的写法-->
     <select id="queryCountByGradeWithProcedure" statementType="CALLABLE"  parameterType="HashMap" >
      {
       CALL queryCountByGradeWithProcedure(
        #{gName,jdbcType=VARCHAR,mode=IN},
        #{scount,jdbcType=INTEGER,mode=OUT}
       )
      } 
     </select>
     
     <!-- 通过存储过程实现删除 -->
     <delete id="deleteStuBynoWithProcedure" statementType="CALLABLE" parameterType="HashMap">
      {
       CALL deleteStuBynoWithProcedure(
        #{sno,jdbcType=INTEGER,mode=IN}
       )
      } 
     </delete>
    </mapper>
  • 相关阅读:
    flask与Django的区别
    flask特殊装饰器
    flaskjinjia2模板
    flask类视图
    flask路由系统
    flask初识
    python2与python3 的安装与环境变量的添加
    WebGL_0007:强制横屏的参考
    NodeJS_0011:nodejs重定向到一个链接或本地的页面的方法
    NodeJS_0006:nodejs响应超时处理
  • 原文地址:https://www.cnblogs.com/wl889490/p/12573523.html
Copyright © 2011-2022 走看看