spring+mybatis+druid+xml

项目结构

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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jty</groupId>
    <artifactId>springmvc</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>servlet</module>
        <module>spring-mvc</module>
        <module>tx</module>
        <module>xmltx</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.2.4.RELEASE</version>
        </dependency>
        <!--web子工程需要-->
       <!-- <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.22</version>
        </dependency>
    </dependencies>
</project>
子工程
<?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>springmvc</artifactId>
        <groupId>com.jty</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>xmltx</artifactId>
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.4</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.4.RELEASE</version>
    </dependency>
</dependencies>

</project>
entity
# 1
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Account {
    private Integer id;
    private Integer userId;
    private Integer money;
}

# 2
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Order {
    private Integer id;
    private Integer userId;
    private String commodityCode;
    private Integer count;
    private Integer money;
}

# 3
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Storage {
    private Integer id;
    private String commodityCode;
    private Integer count;
    private Integer unitPrice;
}

Mapper(Dao)
# 1
public interface AccountMapper {
    /**
     * s
     * @param account
     */
    void update(Account account);
}

# 2
public interface OrderMapper {
    /**
     * s
     * @param order
     */
    void add(Order order);
}

# 3
public interface StorageMapper {
    /**
     * s
     * @param storage
     */
    void update(Storage storage);
}
Service
public class OrderService {
    @Autowired
    OrderMapper orderMapper;
    @Autowired
    StorageMapper storageMapper;
    @Autowired
    AccountMapper accountMapper;

    @Transactional(rollbackFor = Exception.class)
    public void doOrder(){
        //bz0001库存减20
        storageMapper.update(new Storage(null,"bz0001",100-20,100));
        //增加20份订单
        orderMapper.add(
                new Order(null,0001,"bz0001",20,20*100));
        accountMapper.update(new Account(null,0001,1500-20*100));
    }
}

Main
public class XmlMain{

    public static void main(String[] args) {

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
        OrderService orderService = applicationContext.getBean(OrderService.class);
        orderService.doOrder();
    }
}
Mapper.xml

AccountMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tx.mapper.AccountMapper">

    <insert id="update" parameterType="tx.entity.Account">
        update  account_tbl t1
        set t1.money =#{money}
        <where>
            t1.user_id = #{userId}
        </where>
    </insert>
</mapper>

OrderMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tx.mapper.OrderMapper">

    <insert id="add" parameterType="tx.entity.Order">
        insert into order_tbl
        values(null,#{userId},#{commodityCode},#{count},#{money})
    </insert>
</mapper>

StorageMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tx.mapper.StorageMapper">

    <insert id="update" parameterType="tx.entity.Storage">
        update  storage_tbl t1
        set t1.count =#{count}
        <where>
            t1.commodity_code = #{commodityCode}
        </where>
    </insert>
</mapper>
配置文件

application.xml

<?xml version="1.0" encoding="GBK"?>
<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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context-4.1.xsd">

    <!--组件扫描-->
    <context:component-scan base-package="tx.*"/>
    <context:property-placeholder location="classpath:jdbc-config.properties" ignore-unresolvable="true"/>
    <!--详细配置参数见 com.alibaba.druid.pool.DruidAbstractDataSource-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="1"/>
        <property name="minIdle" value="1"/>
        <property name="maxActive" value="20"/>
        <property name="maxWait" value="60000"/>
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
    </bean>
    <!--配置sqlSessionFactoryBean对象-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--mybatis核心配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>
    <!--配置Mapper对象-->
    <bean class="org.mybatis.spring.mapper.MapperFactoryBean" scope="singleton">
        <property name="mapperInterface" value="tx.mapper.AccountMapper"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperFactoryBean" scope="singleton">
        <property name="mapperInterface" value="tx.mapper.OrderMapper"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperFactoryBean" scope="singleton">
        <property name="mapperInterface" value="tx.mapper.StorageMapper"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

    <!--注册OrderService bean-->
    <bean class="tx.OrderService"/>
</beans>

jdbc-config.properties

#mysql jdbc 连接配置
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_tx_db?useUnicode=true&characterEncoding=utf8&useSSL=false&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=123456

mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <mappers>
   <mapper resource="mapper\AccountMapper.xml"/>
   <mapper resource="mapper\OrderMapper.xml"/>
   <mapper resource="mapper\StorageMapper.xml"/>
</mappers>
</configuration>

注:本文仅做记录

posted @ 2020-11-02 05:56  复一日  阅读(206)  评论(0编辑  收藏  举报