美文网首页
Mybatis基础整合(一)

Mybatis基础整合(一)

作者: 寒风凛凛 | 来源:发表于2018-06-23 22:14 被阅读0次
    public class ProductMapperTest {
        @Test
        public void getProductById() throws IOException {
            /**
             * 获取SqlSession:
             *      1.获取mybatis-config.xml的资源流对象(inputStream)
             *      2.创建SqlSessionFactoryBuilder对象
             *      3.调用build方法,传入第二步获取到的流对象,得到SqlSessionFactory对象
             *      4.通过Factory对象调用openSession方法,最后得到SqlSession对象
             */
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            /**
             * 使用SqlSession对象的两种方法:
             *      1.使用传统编程:旧版本的方法
             *      sqlSession.selectOne(String s,Object o):
             *          s:映射文件中的namespace和id的组合,语法:namespace.id;
             *          o:要传递的值或对象
             *      2.使用面向接口编程:
             *      sqlSession.getMapper(Class<T> aClass):
             *          aClass: Mapper接口的字节码对象
             *          注意:使用接口编程时,映射文件要符合以下内容
             *              namespace = Mapper接口的全限定类名
             *              id = Mapper接口中对应的方法名
             *
             *      目前主要使用面向接口式的编程:它具有面向对象的特点,可读性、可操作性高
             *      通过代理生成一个对象,此对象具有接口的实现方法,可以直接调用。
             */
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            Product product =productMapper.getProductById(10L);
            System.out.println(product);
        }
    
    
        //========测试多种传递参数的方式=========
        /** 传递多个参数方法:
         *  Map传递:
         *      参数不做任何包装直接交给后台,Mybatis会将我们的参数封装成Map集合
         *          key = [param1,param2,param3...]/[arg0,arg1,arg2...]
         *          save2pro(String productName, String brand, String supplier);
         *      如果我们想要自定义key的值时,可以使用@Param("自定义的名字")跟在 接口 方法的形参前面:
         *          save2pro(@Param("productName") String productName, String brand, String supplier);
         *      我们也可以先把参数自己封装在Map,在把Map交给Mybatis
         *
         *  使用Bean对象来传递参数:
         *      在映射文件里,获取参数时可以直接使用类的属性名来获取
         */
        @Test
        //方法:Boolean save2(String productName, String brand, String supplier);
        public void save2() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            productMapper.save2("save2", "Mybrand", "Mysupplier");
    
        }
    
        @Test
        //方法:Boolean save2pro(@Param("productName")String productName, String brand, String supplier);
        public void save2pro() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            productMapper.save2pro("save2pro", "Mybrand", "Mysupplier");
        }
    
        @Test
        //方法:Boolean save3(Map<String, Object> map);
        public void save3() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            Map<String, Object> map = new HashMap<>();
            map.put("productName","save3");
            map.put("brand","Mybrand");
            map.put("supplier","Mysupplier");
            productMapper.save3(map);
        }
    
        @Test
        //方法:Boolean save4(Product p);
        public void save4() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            Product product = new Product();
            product.setProductName("save4");
            product.setBrand("Mybrand");
            product.setSupplier("Mysupplier");
            productMapper.save4(product);
        }
    
        //=====测试save、delete、update方法=====
        @Test
        public void save() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            Product product = new Product();
            product.setId(100L);
            product.setProductName("save");
            productMapper.save(product);
        }
    
        @Test
        public void delete() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            productMapper.delete(100L);
        }
    
        @Test
        public void update() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            Product product = new Product();
            product.setId(100L);
            product.setProductName("update");
            productMapper.update(product);
        }
        
        //============获取从数据库返回值或对象============
        /**
         *  获取返回的值或对象:Mybatis会将结果封装成为Map对象
         *      当返回一个对象的时候
         *          key为列名,value为列名对应的值
         *      当返回多个对象的时候
         *          默认情况下,key为自动生成,即1,2,3... value为对象
         *          可以通过注解@MapKey("id")自定义Map集合的key,如列名为id的值成为key
         */
        @Test
        public void getProductByIdResultMap() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            Map map = productMapper.getProductByIdResultMap(38L);
            System.out.println(map.keySet());
            System.out.println(map.values());
        }
    
        @Test
        public void getProductByIdResultMapMulti() {
            //获取Mapper对象
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            ProductMapper productMapper = sqlSession.getMapper(ProductMapper.class);
            //测试开始
            Map map = productMapper.getProductByIdResultMapMulti("罗技");
            System.out.println(map.keySet());
            System.out.println(map.values());
        }
    }
    

    相关文章

      网友评论

          本文标题:Mybatis基础整合(一)

          本文链接:https://www.haomeiwen.com/subject/neidyftx.html