资讯专栏INFORMATION COLUMN

3.平凡之路-传统模式添加操作

cucumber / 2787人阅读

摘要:回顾上节课我们完成了的环境搭建核心配置文件映射文件的执行过程如何执行定制的语句我们测试的是死的数据那么下面我们使用容器传递动态的数据添加操作传递数据专题通过传递数据映射文件代码传递参数数据的类型或者提供额内置类型映射中的获取对应的值

回顾: 上节课我们完成了MyBatis的环境搭建
核心配置文件
映射文件
API的执行过程
如何执行定制的SQL语句

我们测试的是"死"的数据,那么下面我们使用容器传递动态的数据

添加操作传递数据专题 1.通过Map传递数据

映射文件代码

 
  
    INSERT INTO skill  (skill_name,num) 
        VALUES 
     (#{shxt},#{number})
    

parameterType : 传递参数数据的类型 java.util.Map或者MyBatis提供额内置类型映射map
#{map中的Key}获取对应的值,并且进行了预处理

Java测试代码

public class 动态数据之通过Map传递数据 {
    public static void main( String[] args ) {
        SqlSession sqlSession = null;
        try {
            //1.读取核心配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //2.创建SqlSession工厂(SqlSessionFactory) 
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.获取SqlSession 
            //****** SqlSession完成所有的持久化操作CRUD
            sqlSession = sqlSessionFactory.openSession();
            //4.关键步骤: 定位执行SQL语句
            //****如何定位  (namespace+"."+id)

            Map map = new HashMap();
            map.put("shxt", "CSS");
            map.put("number", 66);

            int row = sqlSession.insert("shxt.cy42.mss.add02",map);
            //5.针对于CUD操作需要手动提交事务
            sqlSession.commit();
            System.out.println("影响的行数:"+row);
        } catch (IOException ex) {
            ex.printStackTrace();
        }finally {
            //6.关闭资源
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }

}

图解说明

2.通过自定义Java类传递数据

自定义Java类

public class Skill {

    private Integer skillId;
    private String skillName;
    private Integer skillNumber;
       //省略getter和setter方法
}

映射文件代码

    
    INSERT INTO skill  (skill_name,num) 
        VALUES 
     (#{skillName},#{skillNumber})
    

parameterType:如果不是Java内容类型,可以设置自定义类型的全路径,后面我们也可以
设置自定义别名
#{Java类中属性}获取对应的值

Java代码测试

public class 动态数据之通过Skill持久化类传递数据 {
    public static void main( String[] args ) {
        SqlSession sqlSession = null;
        try {
            //1.读取核心配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //2.创建SqlSession工厂(SqlSessionFactory) 
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.获取SqlSession 
            //****** SqlSession完成所有的持久化操作CRUD
            sqlSession = sqlSessionFactory.openSession();
            //4.关键步骤: 定位执行SQL语句
            //****如何定位  (namespace+"."+id)


            Skill s = new Skill();
            s.setSkillName("jquery");
            s.setSkillNumber(99);

            int row = sqlSession.insert("shxt.cy42.mss.add03",s);//传递数据哟
            //5.针对于CUD操作需要手动提交事务
            sqlSession.commit();
            System.out.println("影响的行数:"+row);
        } catch (IOException ex) {
            ex.printStackTrace();
        }finally {
            //6.关闭资源
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }

}

图解说明

3.关联对象

自定义Java类
Teacher.java

public class Teacher {
    private Integer id;
    private String name;
       //省略getter和setter方法
}

Skill.java

public class Skill {

    private Integer skillId;
    private String skillName;
    private Integer skillNumber;

    //关联对象
    private Teacher teacher;
}

映射文件代码

    
    INSERT INTO skill  (skill_name,num,fk_teacher_id) 
        VALUES 
     (#{skillName},#{skillNumber},#{teacher.id})
    

#{teacher.id}关联对象使用"."运算符

Java测试代码

public class 动态数据之保存技能同时需要保存老师ID {
    public static void main( String[] args ) {
        SqlSession sqlSession = null;
        try {
            //1.读取核心配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //2.创建SqlSession工厂(SqlSessionFactory) 相当于 Connection
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.获取SqlSession 相当于 执行SQL语句对象PreparedStament预处理对象
            //****** SqlSession完成所有的持久化操作CRUD
            sqlSession = sqlSessionFactory.openSession();
            //4.关键步骤: 定位执行SQL语句
            //****如何定位  (namespace+"."+id)


            Skill s = new Skill();
            s.setSkillName("MyBatis");
            s.setSkillNumber(100);
            //假设建立一个老师
            Teacher t = new Teacher();
            t.setId(-999);
            t.setName("胖先森");
            //建立联系
            s.setTeacher(t);


            int row = sqlSession.insert("shxt.cy42.mss.add04",s);
            //5.针对于CUD操作需要手动提交事务
            sqlSession.commit();
            System.out.println("影响的行数:"+row);
        } catch (IOException ex) {
            ex.printStackTrace();
        }finally {
            //6.关闭资源
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }

}

图解说明

4.返回自增长主键设置

映射文件

    
    
    
    INSERT INTO skill  (skill_name,num) 
        VALUES 
     (#{skillName},#{skillNumber})
    

keyProperty 将自增长的主键值赋值给skillId属性

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70316.html

相关文章

  • 前端要给力 — 平凡之路

    摘要:平凡之路前端发展了十几年,现在几乎到达顶峰的速度了,近两年推出的框架层出不穷,早已不是一统江湖了。模板和数据分离也好,状态和表现分离也好,我越来越体会到分是为了合这条平凡之路,还会频繁的发展和融合下去。 一直想总结下自己摸打滚爬的前端经历,3年,从一个极讨厌前端的人,变成一个吃前端饭碗的人。没有人带过我,跌跌撞撞的缓慢前进,但我很喜欢分享,喜欢一起进步,这会是我以后一直乐意做的事情。 ...

    WelliJhon 评论0 收藏0
  • 7.平凡之路-动态SQL语句

    摘要:附转义字符第二种方法因为这个是格式的,所以不允许出现类似这样的字符,但是都可以使用符号进行说明,将此类符号不进行解析你的可以写成这个文件示例代码 动态SQL语句是核心之一,这里我们通过几个示例来演示 一 多条件查询专题 1.通过恒等式完成动态SQL语句 涉及到if标签 ...

    时飞 评论0 收藏0
  • 6.平凡之路-单条件模糊查询

    摘要:并且如果使用那么必须要指明值使用简单的数据类型不好使使用接口代理模式的注解也可以 属于MyBatis的核心之一,这里面的坑比较多,大家多多看看吧 一 模糊查询的三种方式介绍 我会使用resultMap处理结果集数据 1.死数据的模糊查询 映射文件 SELECT * FROM...

    tuantuan 评论0 收藏0
  • 4.平凡之路-封装帮助类和加载属性文件

    摘要:文件知识点修饰类不能被基础修饰方法不能被重写修改变量常量不允许进行实例化静态代码块只是加载一次加载核心配置文件失败图解说明加载属性文件新建的根目录下修改核心配置文件加载属性文件配置数据库的环境事务管理器保证数据的完整性 MyBatisUtils.java 文件 /** * 知识点: * final 修饰类 : 不能被基础 * 修饰方法 : 不能被重写 * 修改变量 : 常量 ...

    snifes 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<