Personnel management system --第一天

学习的第一个完整的案例,Sping+Mybatis

1.项目结构

  • sm:项目名
  • sm-service:持久层和业务层
  • sm-web:表现层

2.创建数据库

3.创建项目

PMS-service层的POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>sm</artifactId>
        <groupId>per.lc</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>per.lc</groupId>
    <artifactId>em-service</artifactId>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>  //Java连接Mysql数据库的驱动
            <version>8.0.13</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>  //Mybatis框架
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>  //提供IOC,DI
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId> //bean工厂,实例化对象
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId> //获取实例化后的对象
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId> //提供了JDBC抽象层,从而无需进行繁琐的JDBC编码(注册驱动Class.ForName(),DriverManage.getConnection(url,usename,password),prepareStatement(),execute())
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId> //spring-tx模块支持对实现特殊接口的类以及所有POJO(普通Java对象)进行编程和声明式事务管理。:业务层
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId> //AspectJ AOP框架 :日志模块
            <version>1.9.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId> //支持AspectJ
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId> //整合spring和mybatis,接口由mybatis提供
            <version>2.0.2</version>
        </dependency>
    </dependencies>
</project>

 PMS-web层的POM.xml

<dependencies>
        <dependency>
            <groupId>per.lc</groupId>
            <artifactId>em-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

4.引入配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- Spring整合Mybatis 将mybatis管理的对象(sqlsessionFactory,持久化的对象)交给spring-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">   //数据源
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/sm?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GTM%2B8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">   //session工厂
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="per.lc.sms.entity"/>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">   //相当与mybatis配置文件中的<mapper>标签
        <property name="basePackage" value="per.lc.sms.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    <!-- 声明式事务 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">  //基于tx标签的事务管理
        <tx:attributes>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="search*" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>  //让事务管理对目标方法起作用
        <aop:pointcut id="txPointcut" expression="execution(* per.lc.sms.service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
    </aop:config>
    <!-- 全局扫描 -->
    <context:component-scan base-package="per.lc.sms"/>
<!-- 开启AspectJ的注解开发,自动代理-->
    <aop:aspectj-autoproxy/>
</beans>

5.自己在编码过程中碰到的问题

  • 复习mybatis的开发过程。
  • 了解<bean>中 value 和 ref 的区别

 

posted @ 2019-10-09 22:08  斯坦尼夫拉夫斯基  阅读(240)  评论(0)    收藏  举报