2、基本工程搭建(2)(案例笔记)

一、框架整合

1.1 思路

其实思路和我们之前整合的方式一样,这里当作复习。

1.1.1 dao 层

  • 整合mybatisspring,需要用到的依赖:mybatisjarmysql驱动,数据库连接池druidmybatisspring的整合包,spring
  • 配置文件:
    1、mybatis的配置文件SqlMapConfig.xml
    2、spring的配置文件:applicationContext-dao.xml
    数据源、数据库连接池、SqlSessionFactory(整合包中)、mappper文件扫描器(整合包)

1.1.2 Service层

  • 使用的jarspringjar
  • 配置文件:
    添加到springmvc容器applicationContext-service.xml,其中需要配置扫描器(扫描带@Service注解的类)
    事务(applicationContext-transaction.xml),一个事务管理器,配置切面aop、通知tx

1.1.3 表现层

  • 相关依赖包
    需要springmvcspring的包。
  • 配置文件:springmvc.xml
    配置适配器、映射器、视图解析器。配置注解驱动(替代适配器和映射器)。配置一个视图解析器。配置包扫描器,扫描Controller注解。

1.1.4 web.xml

web.xml中配置springmvc的前端控制器,spring的监听器字符编码等。

注意:不管是那一层的配置文件,都应该放在web层下面。即工程taotao-manager-web中的src/main/resources中。

1.2 整合

1.2.1 dao层

taotao-manager-web/src/main/resources/mybatis/SqlMapConfig.xml





taotao-manager-web/src/main/resources/spring/applicationContext-dao.xml




    
    
    
    
    
        
        
        
        
        
        
    
    
    
        
        
        
        
    
    
        
    

taotao-manager-web/src/main/resources/propertis/db.propertis

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3305/taotao?characterEncoding=utf-8
jdbc.username=root
jdbc.password=walp1314

说明:相关表和数据这里就不给出了,网上可以找到。

1.2.2 service层

其中applicationContext-service.xml



    
    
    

事务applicationContext-transaction.xml




    
    
    
        
        
    
    
    
    
    
        
            
            
            
            
            
            
            
            
            
            
        
    
    
    
    
    
        
    

1.2.3 表现层

其中springmvc.xml



    
    
    
    
    

    
    
        
        
    

web.xml



    taotao-manager

    
    
        contextConfigLocation
        classpath:spring/applicationContext-*.xml
    

    
    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
    
    
        CharacterEncodingFilter
        /*
    

    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        taotao-manager
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:spring/springmvc.xml
        
        1
    
    
        taotao-manager
        /
    


    
        index.jsp
    

说明:到此,相关的整合工作就完成了。

二、测试

2.1 逆向工程生成相关代码

新建一个工程mybatis-generator
generatorConfig.xml





    
        
            
            
        
        
        
        
        
        
        
        
            
        

        
        
            
            
            
            
        

        
        
            
            
        

        
        
            
            
        

        
        

GeneratorSqlmap.java

package com.taotao.util;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class GeneratorSqlmap {
    public void generator() throws Exception {
        List warnings = new ArrayList();
        boolean overwrite = true;
        File configFile = new File("generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }

    public static void main(String[] args) {
        try {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

说明:将生成的mapper拷贝到taotao-manager-dao,将生成的pojo拷贝到taotao-manager-pojo

2.2 测试

2.2.1 需求

根据商品id查询商品信息,返回json数据。

2.2.2 dao层

查询的表tb_item,。可以直接使用逆向工程生成的代码。这里我们直接利用逆向工程生成的代码。

2.2.3 service层

接收一个商品id,调用mapper查询商品信息,返回商品的pojo
ItemServiceImpl.java

package com.taotao.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;
import com.taotao.pojo.TbItemExample.Criteria;
import com.taotao.service.ItemService;
/**
 * 商品查询service
 * @author yj
 */
@Service
public class ItemServiceImpl implements ItemService {

    @Autowired
    private TbItemMapper itemMapper;
    
    @Override
    public TbItem getItemById(Long itemId) throws Exception {
        //TbItem item = itemMapper.selectByPrimaryKey(itemId);
        
        TbItemExample example = new TbItemExample();
        //创建查询条件
        Criteria criteria = example.createCriteria();
        criteria.andIdEqualTo(itemId);
        
        List list = itemMapper.selectByExample(example);
        //判断list中是否为空
        TbItem item = null;
        if(list != null && list.size() > 0){
            item = list.get(0);
        }
        return item;
    }
}

2.2.4 Controller层

接收一个商品id,调用service返回一个商品的pojo,直接响应pojo。要返回json数据需要使用@ResponseBody
注意:使用@ResponseBody时一定要加上jsckson的包。而uri地址是/item/{itemId}
ItemController.java

package com.taotao.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.taotao.pojo.TbItem;
import com.taotao.service.ItemService;
/**
 * 商品查询
 * @author yj
 */
@Controller
public class ItemController {
    @Autowired
    private ItemService itemService;
    
    @RequestMapping("/item/{itemId}")
    @ResponseBody
    private TbItem getItemById(@PathVariable Long itemId) throws Exception{
        TbItem item = itemService.getItemById(itemId);
        return  item;
    }
}

2.2.5 测试

此时启动工程,使用地址http://localhost:8080/item/635906访问会出现异常org.apache.ibatis.binding.BindingException。这表示找不到相关的mapper文件,我们在工程的classes目录中发现没有mapper文件。这是因为maven工程的src/main/java包中会忽略非java文件。也就是mapper包中的xml文件被忽略了。此时我们需要修改taotao-manager-dao中的pom文件,添加如下内容:


    
        
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
                false
            
        
    

这表示会将此包中的xml等文件也复制(默认只复制src/main/resources中的文件)。此时classes目录中就会有mapper文件。测试结果为:

1

你可能感兴趣的:(2、基本工程搭建(2)(案例笔记))