springMybatis项目集成(简单的创建一个项目)

配置文件pom文件

<?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>org.example</groupId>
    <artifactId>Spring-Mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
<!--       配置springcontext-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.11</version>
        </dependency>
<!--    springjdbc    -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.1.11</version>
        </dependency>
<!--     mysql   -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
<!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.14</version>
        </dependency>
<!--     mybatis-spring 的核心配置依赖没有他的话就使用不了这个 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>
<!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
<!--        druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
<!--        配置slf4j-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.17.1</version>
        </dependency>
    </dependencies>

</project>

Logegr.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>
    <!--指定资源位置-->
<!--    <properties resource&lt;!&ndash;&ndash;&gt;="jdbc.properties"/>-->

    <settings>
        <!--日志文件配置-->
<!--        <setting name="logImpl" value="SLF4J"/>-->
        <!--        STDOUT_LOGGING-->

        <!-- 开启驼峰命名规则 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>

    </settings>

    <!--起别名-->
    <typeAliases>
        <!--在这个地方我们需要去设置一下他的别名在这个默认情况下他会使用首个字母的小写字母-->
        <typeAlias type="com.project.pojo.Bank" alias="Bank"/>
        <!--
        <typeAlias alias="Author" type="domain.blog.Author"/>
-->
        <!--        <package name="com.project.pojo.User"/>-->
    </typeAliases>

<!--    <environments default="development">-->
<!--        &lt;!&ndash;直接使用一个默认的环境&ndash;&gt;-->
<!--        <environment id="development">-->
<!--            <transactionManager type="JDBC"/>-->
<!--            <dataSource type="POOLED">-->
<!--                <property name="driver" value="${driver}"/>-->
<!--                <property name="url" value="${url}"/>-->
<!--                <property name="username" value="${username}"/>-->
<!--                <property name="password" value="${password}"/>-->
<!--            </dataSource>-->
<!--        </environment>-->
<!--    </environments>-->
<!--    <mappers>-->
<!--        &lt;!&ndash;        <mapper url="file:///var/mappers/AuthorMapper.xml"/>&ndash;&gt;-->
<!--        &lt;!&ndash;        <mapper class="org.mybatis.builder.PostMapper"/>&ndash;&gt;-->
<!--        <mapper resource="UserMapper.xml"/>-->
<!--        &lt;!&ndash;使用这个的前提是我们xml文件要和这个在同级目录的情况下&ndash;&gt;-->
<!--        &lt;!&ndash;        <package name="com.project.Dao.UserDao"/>&ndash;&gt;-->
<!--    </mappers>-->
</configuration>

jdbc.properties配置文件

jdbc.url=jdbc:mysql://localhost:3306/studentdb?useSSL=false&serverTimezone=UTC
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=123456

Springmxl

<?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:tx="http://www.springframework.org/schema/tx"
       xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/tx
       https://www.springframework.org/schema/tx/spring-tx.xsd
       http://mybatis.org/schema/mybatis-spring
       http://mybatis.org/schema/mybatis-spring.xsd">

    <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.project.Service"/>

    <!-- 引入外部的配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${jdbc.url}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 配置SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:Mybatis-config.xml"/>
    </bean>

    <!-- 配置Mapper扫描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.project.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 启用事务注解 -->
    <tx:annotation-driven transaction-manager="txManager"/>

</beans>

log4j2配置设置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </Console>
        <!--        <File name="LogFile" fileName="logs/app.log">-->
        <!--            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>-->
        <!--        </File>-->
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console"/>
            <!--            <AppenderRef ref="LogFile"/>-->
        </Root>
        <!--        意思就是只有这个才会执行-->
        <!--        <Logger name="com.project.Bean.User" level="debug" additivity="false">-->
        <!--&lt;!&ndash;            在这个地方使用这个false就不会让这个跟高级的配置文&ndash;&gt;-->
        <!--            <AppenderRef ref="Console"/>-->
        <!--            &lt;!&ndash; 如果你想同时记录到文件,可以取消注释下面的内容 &ndash;&gt;-->
        <!--            &lt;!&ndash;<AppenderRef ref="LogFile"/>&ndash;&gt;-->
        <!--        </Logger>-->
    </Loggers>
</Configuration>

Mapper文件配置

<?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="com.project.mapper.AccountMapper">
    <!-- 定义结果映射 -->
    <resultMap id="userResultMap" type="com.project.pojo.Bank">
        <!-- 列名和Java对象属性名之间的映射关系 -->
        <result property="actNo" column="act_no"/>
        <result property="balance" column="balance"/>
    </resultMap>

    <!-- 插入操作 -->
    <insert id="insert">
        INSERT INTO studentdb.act (act.act_on, balance) VALUES (#{actNo}, #{balance})
    </insert>

    <!-- 更新操作 -->
    <update id="update">
        UPDATE studentdb.act SET balance = #{balance} WHERE act.act_on = #{actNo}
    </update>

    <!-- 删除操作 -->
    <delete id="delete">
        DELETE FROM studentdb.act WHERE act.act_on = #{actNo}
    </delete>

    <!-- 根据ID查询 -->
    <select id="selectByID" resultMap="userResultMap">
        SELECT * FROM studentdb.act WHERE act.act_on = #{actNo}
    </select>

    <!-- 查询所有记录 -->
    <select id="selectAll" resultMap="userResultMap">
        SELECT * FROM studentdb.act
    </select>
</mapper>

Mapper接口

package com.project.mapper;

import com.project.pojo.Bank;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

public interface AccountMapper {
	/**
	 * 增加账户
	 * @param bank
	 * @return
	 */
	int insert(Bank bank);
	
	int delete(String act);
	
	int update(Bank bank);
	
	Bank selectByID(String id);
	
	List<Bank> selectAll();
}

实体类(empty)

package com.project.pojo;

public class Bank {
	private String actNo;
	private Integer balance;
	
	public Bank(String number, int i) {
		this.actNo=number;
		this.balance=i;
	}
	
	@Override
	public String toString() {
		return "bank{" +
				"actNo='" + actNo + '\'' +
				", balance=" + balance +
				'}';
	}
	
	public String getActNo() {
		return actNo;
	}
	
	public void setActNo(String actNo) {
		this.actNo = actNo;
	}
	
	public Integer getBalance() {
		return balance;
	}
	
	public void setBalance(Integer balance) {
		this.balance = balance;
	}
}

业务实现类

package com.project.Service.impl;

import com.project.Service.BankService;
import com.project.mapper.AccountMapper;
import com.project.pojo.Bank;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Service("bankService")
@Transactional
public class BankServiceImpl implements BankService {
	/**
	 * 在这个之前都是使用这个来获取的
	 */
	@Autowired
//	@Qualifier("accountMapper")
	private AccountMapper accountMapper;
	
	
	@Override
	public int save(Bank bank) {
		return accountMapper.insert(bank);
	}
	
	@Override
	public int deleteByID(String act) {
		return accountMapper.delete(act);
	}
	
	@Override
	public int modify(Bank bank) {
		return accountMapper.update(bank);
	}
	
	@Override
	public Bank getByActno(String id) {
		return accountMapper.selectByID(id);
	}
	
	@Override
	public List<Bank> getActnoAll() {
		return accountMapper.selectAll();
	}
	
	@Override
	public void transfer(String fromAct, String toAct, Integer money) {
		Bank bank = accountMapper.selectByID(fromAct);
		if (bank.getBalance()<money) {
			throw  new RuntimeException("余额不足");
		}
		Bank bank1 = accountMapper.selectByID(toAct);
		//在这个内存当中把这个数据进行修改
		bank.setBalance(bank.getBalance()-money);
		//修改数据表
		int update = accountMapper.update(bank);
		
		if (1==1)
		{
			throw new RuntimeException("模拟异常!!");
		}
		bank1.setBalance(bank1.getBalance()+money);
		
	 	update+=accountMapper.update(bank1);
		if (update!=2) {
			throw new RuntimeException("转账失败!!!");
		}
	}
}

业务接口

package com.project.Service;

import com.project.pojo.Bank;

import java.util.List;

public interface BankService {
	/**
	 * 保存业务
	 * @param bank
	 * @return
	 */
	int save(Bank bank);
	
	/**
	 * 删除数据
	 * @param act
	 * @return
	 */
	int deleteByID(String act);
	
	/**
	 * 修改账户
	 * @param bank
	 * @return
	 */
	int modify(Bank bank);
	
	/**
	 * 获取账户通过这个id
	 * @param id
	 * @return
	 */
	Bank getByActno(String id);
	
	/**
	 * 获取所有的账户
	 * @return
	 */
	List<Bank> getActnoAll();
	/**
	 * 转账业务
	 */
	public void transfer(String fromAct,String toAct,Integer money);
}

测试类

package com.project.test;

import com.project.Service.BankService;
import com.project.Service.impl.BankServiceImpl;
import com.project.pojo.Bank;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 测试
 */
public class MybatisTest {
	@Test
	public void test1()
	{
		ApplicationContext context = (ApplicationContext) new ClassPathXmlApplicationContext("Spring.xml");
		BankService bankService = (BankService) context.getBean("bankService", BankService.class);
//		bankService.save(new Bank("05",12));
		bankService.transfer("01","05",1000);
	}
}

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值