博客 / 詳情

返回

spring6-與juint和mybatis的集成

spring對junit的支持

主要是自動從spring容器中獲取bean。不用手動獲取了。

spring對junit4的支持

1.引入spring和junit4的依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.4</version>
</dependency>
<!--        spring對junit支持的依賴,spring6既支持junit4也支持junit5  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.4</version>
        </dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

2.編寫測試類

@RunWith(SpringJUnit4ClassRunner.class)
// 加載spring.xml配置文件 加載spring容器
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit4Test {

    @Autowired
    private Account account;

    @Test
    public void testSpringJunit4(){
        System.out.println(account.getActno());
    }
}

spring對junit5的支持

  1. 引入依賴
  <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.4</version>
        </dependency>
<!--        spring對junit支持的依賴-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.9.2</version>
            <scope>test</scope>
        </dependency>

2.編寫測試類

@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit5Test {

    @Autowired
    private Account account;

    @org.junit.jupiter.api.Test
    public void testSpringJunit5(){
        System.out.println(account.getActno());
    }
}

spring集成mybatis

  1. 引入依賴
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.21</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>7.0.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.19</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>4.0.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.20</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>
  1. 創建三層架構需要的包:mapper、pojo、service
  2. 編寫pojo類
public class Account {
    private String actno;
    private double balance;

    @Override
    public String toString() {
        return "Account{" +
                "actno='" + actno + '\'' +
                ", balance=" + balance +
                '}';
    }

    public Account() {
    }

    public Account(String actno, double balance) {
        this.actno = actno;
        this.balance = balance;
    }

    public String getActno() {
        return actno;
    }

    public void setActno(String actno) {
        this.actno = actno;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}
  1. 編寫mapper接口
// 該接口不需要寫實現類,mybatis會根據動態代理機制自動生成實現類
public interface AccountMapper {
    int update(Account getAccount);
    int insert(Account getAccount);
    int delete(String actno);
    Account getAccount(String actno);
    List<Account> getAllAccount();
}
  1. 編寫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.ali.mapper.AccountMapper">
    <insert id="insert" parameterType="com.ali.pojo.Account">
        insert into t_act(actno, balance) values(#{actno}, #{balance})
    </insert>

    <delete id="delete" >
        delete
        from t_act
        where actno = #{actno}
    </delete>

    <update id="update" parameterType="com.ali.pojo.Account">
        update t_act
        set name  = #{name},
            money = #{money}
        where actno = #{actno}
    </update>

    <select id="getAccount"  resultType="com.ali.pojo.Account">
        select actno, balance
        from t_act
        where actno = #{actno}
    </select>

    <select id="getAllAccount" resultType="com.ali.pojo.Account">
        select actno, balance
        from t_act
    </select>
</mapper>
  1. 編寫service和service的實現類
public interface AccountService {
    int addAccount(Account account);
    int updateAccount(Account account);
    int deleteAccount(String actno);
    Account getAccount(String actno);
    List<Account> getAllAccount();
}
@Service("accountService")
public class AccountServiceImpl implements com.ali.service.AccountService {

    @Autowired
    private AccountMapper accountMapper;

    @Override
    public int addAccount(Account account) {
        return accountMapper.insert(account);
    }

    @Override
    public int updateAccount(Account account) {
        return accountMapper.update(account);
    }

    @Override
    public int deleteAccount(String actno) {
        return accountMapper.delete(actno);
    }

    @Override
    public Account getAccount(String actno) {
        return accountMapper.getAccount(actno);
    }

    @Override
    public List<Account> getAllAccount() {
        return accountMapper.getAllAccount();
    }
}
  1. 編寫jdbc.properties配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring6?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=yourpassword
  1. 編寫mybaits-config.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>

<!--    打印mybatis的日誌信息,sql語句等-->
   <settings>
       <setting name="logImpl" value="STDOUT_LOGGING"/>
   </settings>
</configuration>
  1. 編寫spring.xml配置文件
<?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"
       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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

<!--    組件掃描-->
<context:component-scan base-package="com.ali" />
<!--    引入外部的屬性配置文件-->
<context:property-placeholder location="jdbc.properties" />
<!--    數據源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="driverClassName" value="${jdbc.driver}" />
</bean>
<!--    配置sqlSessionFactoryBean-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--    注入數據源-->
    <property name="dataSource" ref="dataSource" />
<!--    指定mybatis的配置文件位置-->
    <property name="configLocation" value="classpath:mybatis-config.xml" />
<!--    指定別名-->
    <property name="typeAliasesPackage" value="com.ali.pojo" />
</bean>

<!--    Mapper掃描器,會自動掃描指定包下的mapper接口,併為其創建代理對象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.ali.mapper" />
</bean>

<!--    事務管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
<!--    啓用事務註解-->
    <tx:annotation-driven transaction-manager="transactionManager" />
</beans>

在spring配置文件中引入子配置文件

<!--    在spring.xml中引入其他的spring配置文件,common.xml中可以放置一些公共的bean定義
    ,例如一些工具類、常量等,這樣就可以在多個配置文件中共享這些bean定義,避免重複定義。-->
    <import resource="common.xml" />
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.