栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

从零开始做:SSM分模块构建案例-显示所有订单

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从零开始做:SSM分模块构建案例-显示所有订单

1.第一步:前期准备 1.1建数据库和表
CREATE DATABASE maven_adv;
-- 创建用户表 用户名
CREATE TABLE `user` (
     uid INT PRIMARY KEY AUTO_INCREMENT,
     `name` VARCHAr(20) NOT NULL,
     sex CHAr(1) DEFAULT '男',
     phone VARCHAr(20)
);

插入初始数据

INSERT INTO `user` (`name`,sex,phone) VALUES 
('张小敏','女','13923454567'), 
('李强','男','18712321234'),
('邹家俊','男','16233425678');

建订单表order

-- 订单表
CREATE TABLE `order` (
    oid INT PRIMARY KEY AUTO_INCREMENT,
    address VARCHAr(100) COMMENT '订单地址',
    total DOUBLE COMMENT '金额',
    uid INT,
    FOREIGN KEY(uid) REFERENCES `user`(uid)
);

插入初始数据

- 一个用户下多个订单
INSERT INTO `order` (address,total,uid) VALUES 
('广东省汕头市', 3200,1),
('湖南省株洲市', 250,1),
('广西省柳州市', 1200,2),
('广州市海珠区', 78,2),
('海南省海口市', 605,3);

2.建maven父子工程

 3.在父模块中导包,并约定包的版本号


    4.0.0

    com.itheima
    day36-ssm-parent
    pom
    1.0-SNAPSHOT
    
        ssm-entity
        ssm-dao
        ssm-service
        ssm-web
    

    
    
        
        UTF-8
        UTF-8
        
        5.2.10.RELEASE
        
        1.7.7
        
        3.1.0
        
        3.5.5
        
        8.0.22
        
        1.3.1
        
        1.0.29
        
        1.6.12
        
        2.9.8
        
        1.18.6
        
        4.13
    

    
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
        
            org.aspectj
            aspectjweaver
            ${aspectj.version}
        
        
        
            javax.servlet
            javax.servlet-api
            ${servlet.version}
        
        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
        
            org.mybatis
            mybatis-spring
            ${mybatis.spring.version}
        
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
        
        
            com.alibaba
            druid
            ${druid.version}
        
        
        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        
        
        
            com.fasterxml.jackson.core
            jackson-databind
            ${jackson.version}
        
        
        
            org.projectlombok
            lombok
            ${lombok.version}
        
        
        
            org.springframework
            spring-test
            ${spring.version}
            test
        
        
            junit
            junit
            ${junit.version}
            test
        

    

4.第四步:在实体类中建两个实体类

由于其不需要依赖谁,使用直接使用父模块里面的包即可,系统会自动建立关系

User类:

@Data
public class User {
    private Integer uid;
    private String name;
    private char sex;
    private String phone;
}

Order类:

@Data
public class Order {
    private Integer oid;
    private String address;
    private Double total;
    private User user;  //包含了用户对象,查询订单对象,可以获取到用户对象的属性
}

5.第五步:在dao模块中编写实体类以及对应的SQL语句方法,用于访问数据库。
public interface OrderDao {

    
    List findUserAndOrder(@Param("address") String address);
}

用xml配置来写SQL语句(简单SQL用注解方式写就行,复杂SQL语句要用到xml配置来写)

 注意:此处建包是com/itheima/dao,不是用点隔开,否则建包不成功。






    
    
        
        
        
        
    

    
    

    
    
        SELECT * FROM `user` u INNER JOIN `order` o ON u.uid = o.uid
        
            WHERe address LIKE "%"#{address}"%"
        
    
在依赖包里面添加其对实体类的依赖

        
            org.example
            ssm-entity
            1.0-SNAPSHOT
        
    
6.第六步:在service模块中编写相关配置 6.1建如下框架:

6.2导依赖包:

在pom.xml配置文件中添加:service对dao的依赖

 
    
        
            com.itheima
            ssm-dao
            1.0-SNAPSHOT
        
    
6.3编写comfig里面的三个配置类:jdbcConfig用于链接数据库,MybatisConfig用于Spring整合Mybatis,以及SpringConfig主配置类(以后这些都是固定不变的,因此在接下来的项目,这些都是直接拿来使用了。最多修改一下其上面的注解。)

jdbcConfig类:

@PropertySource("classpath:jdbc.properties")  //加载属性文件
public class JdbcConfig {

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.driverClassName}")
    private String driverClassName;

    
    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        return dataSource;
    }

    
    @Bean
    public DataSourceTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

 MybatisConfig类:

public class MybatisConfig {

    
    @Bean
    public SqlSessionFactoryBean sessionFactoryBean(DataSource dataSource) {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        //注入数据源
        factoryBean.setDataSource(dataSource);
        //定义别名
        factoryBean.setTypeAliasesPackage("com.itheima.entity");
        //显示查询的SQL语句
        Configuration configuration = new Configuration();  //创建一个配置对象
        configuration.setLogImpl(StdOutImpl.class);  //在控制台显示SQL语句
        configuration.setMapUnderscoreToCamelCase(true);  //开启下划线列名映射成实体类中驼峰命名
        factoryBean.setConfiguration(configuration);
        return factoryBean;
    }

    
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setBasePackage("com.itheima.dao");
        return configurer;
    }
}

SpringConfig主配置类:

@Configuration
@ComponentScan("com.itheima.service")   //只扫描业务层
//整合mybatis,需要导入其它的两个配置文件
@Import({JdbcConfig.class, MybatisConfig.class})
@EnableTransactionManagement  //开启事务管理
public class SpringConfig {
}
6.4:在resources下导入两个源文件配置:(之前多次使用,其实复制粘贴进来就可以)

jdbc.properties

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///maven_adv?serverTimezone=UTC
jdbc.username=root
jdbc.password=root

log4j.properties(用以对log4j的日志的支持)

# 全局的日志级别,输出到控制台
log4j.rootLogger=info, stdout

# Spring框架中的日志级别为info
log4j.category.org.springframework=info
# dao包中的日志级别为debug
log4j.category.com.itheima.dao=debug

# 输出到控制台的日志格式
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c]-%m%n
6.5:编写service的接口以及实现类
public interface OrderService {

    
    List findUserAndOrder(String address);
}
@Service//注意此处添加注解,将这个类添加到Spring容器中
public class OrderServiceImpl implements OrderService {

    @Autowired
    private OrderDao orderDao;

    
    @Override
    public List findUserAndOrder(String address) {
        return orderDao.findUserAndOrder(address);
    }
}
7.第七步编写web模块 7.1建如下框架

 7.2导入相关依赖

    
      org.example
      ssm-service
      1.0-SNAPSHOT
    
  
7.3编写comfig里面的三个配置类:SpringMvcConfig(springMVC子容器,用于配置web相关支持),ServletConfigInitializer(将Spring父容器和子容器建立联系,并初始化加载,建立拦截所有请求处理),SpringMvcSupport(用以放行前端的静态资源)(以后这些都是固定不变的,因此在接下来的项目,这些都是直接拿来使用了。最多修改一下其上面的注解。)

SpringMvcConfig类:

@Configuration
@ComponentScan({"com.itheima.controller", "com.itheima.config"})  //扫描控制器
@EnableWebMvc  //开启json转换
public class SpringMvcConfig {
}

ServletConfigInitializer类:

public class ServletConfigInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    
    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

SpringMvcSupport类:

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {

    
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        System.out.println("静态资源放行");
        registry.addResourceHandler("/css
    @GetMapping("order")
    public List findUserAndOrder(String address) {
        return orderService.findUserAndOrder(address);
    }
}

webapp里面的前端代码在我电脑里面,没有前端代码,可以使用postmen进行模拟交互。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/926637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号