全球顶级资深评论员 發表於 2026-2-10 16:26:00

spring6-与juint和mybatis的集成

<h1 id="spring对junit的支持">spring对junit的支持</h1>
<p>主要是自动从spring容器中获取bean。不用手动获取了。</p>
<h2 id="spring对junit4的支持">spring对junit4的支持</h2>
<p>1.引入spring和junit4的依赖</p>
<pre><code class="language-xml">&lt;dependency&gt;
    &lt;groupId&gt;org.springframework&lt;/groupId&gt;
    &lt;artifactId&gt;spring-context&lt;/artifactId&gt;
    &lt;version&gt;6.0.4&lt;/version&gt;
&lt;/dependency&gt;
&lt;!--      spring对junit支持的依赖,spring6既支持junit4也支持junit5--&gt;
      &lt;dependency&gt;
            &lt;groupId&gt;org.springframework&lt;/groupId&gt;
            &lt;artifactId&gt;spring-test&lt;/artifactId&gt;
            &lt;version&gt;6.0.4&lt;/version&gt;
      &lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;junit&lt;/groupId&gt;
    &lt;artifactId&gt;junit&lt;/artifactId&gt;
    &lt;version&gt;4.13.2&lt;/version&gt;
    &lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
</code></pre>
<p>2.编写测试类</p>
<pre><code class="language-java">@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());
    }
}
</code></pre>
<h2 id="spring对junit5的支持">spring对junit5的支持</h2>
<ol>
<li>引入依赖</li>
</ol>
<pre><code class="language-xml">&lt;dependency&gt;
            &lt;groupId&gt;org.springframework&lt;/groupId&gt;
            &lt;artifactId&gt;spring-context&lt;/artifactId&gt;
            &lt;version&gt;6.0.4&lt;/version&gt;
      &lt;/dependency&gt;
&lt;!--      spring对junit支持的依赖--&gt;
      &lt;dependency&gt;
            &lt;groupId&gt;org.springframework&lt;/groupId&gt;
            &lt;artifactId&gt;spring-test&lt;/artifactId&gt;
            &lt;version&gt;6.0.4&lt;/version&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
            &lt;groupId&gt;org.junit.jupiter&lt;/groupId&gt;
            &lt;artifactId&gt;junit-jupiter&lt;/artifactId&gt;
            &lt;version&gt;5.9.2&lt;/version&gt;
            &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
</code></pre>
<p>2.编写测试类</p>
<pre><code class="language-java">@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());
    }
}
</code></pre>
<h1 id="spring集成mybatis">spring集成mybatis</h1>
<ol>
<li>引入依赖</li>
</ol>
<pre><code class="language-xml">&lt;dependency&gt;
    &lt;groupId&gt;org.springframework&lt;/groupId&gt;
    &lt;artifactId&gt;spring-context&lt;/artifactId&gt;
    &lt;version&gt;6.0.21&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework&lt;/groupId&gt;
    &lt;artifactId&gt;spring-jdbc&lt;/artifactId&gt;
    &lt;version&gt;7.0.2&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;mysql&lt;/groupId&gt;
    &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
    &lt;version&gt;8.0.30&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.mybatis&lt;/groupId&gt;
    &lt;artifactId&gt;mybatis&lt;/artifactId&gt;
    &lt;version&gt;3.5.19&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.mybatis&lt;/groupId&gt;
    &lt;artifactId&gt;mybatis-spring&lt;/artifactId&gt;
    &lt;version&gt;4.0.0&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
    &lt;artifactId&gt;druid&lt;/artifactId&gt;
    &lt;version&gt;1.1.20&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;junit&lt;/groupId&gt;
    &lt;artifactId&gt;junit&lt;/artifactId&gt;
    &lt;version&gt;4.13.2&lt;/version&gt;
    &lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
</code></pre>
<ol start="2">
<li>创建三层架构需要的包:mapper、pojo、service</li>
<li>编写pojo类</li>
</ol>
<pre><code class="language-java">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;
    }
}
</code></pre>
<ol start="4">
<li>编写mapper接口</li>
</ol>
<pre><code class="language-java">// 该接口不需要写实现类,mybatis会根据动态代理机制自动生成实现类
public interface AccountMapper {
    int update(Account getAccount);
    int insert(Account getAccount);
    int delete(String actno);
    Account getAccount(String actno);
    List&lt;Account&gt; getAllAccount();
}
</code></pre>
<ol start="5">
<li>编写mapper配置文件</li>
</ol>
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;
&lt;mapper namespace="com.ali.mapper.AccountMapper"&gt;
    &lt;insert id="insert" parameterType="com.ali.pojo.Account"&gt;
      insert into t_act(actno, balance) values(#{actno}, #{balance})
    &lt;/insert&gt;

    &lt;delete id="delete" &gt;
      delete
      from t_act
      where actno = #{actno}
    &lt;/delete&gt;

    &lt;update id="update" parameterType="com.ali.pojo.Account"&gt;
      update t_act
      set name= #{name},
            money = #{money}
      where actno = #{actno}
    &lt;/update&gt;

    &lt;select id="getAccount"resultType="com.ali.pojo.Account"&gt;
      select actno, balance
      from t_act
      where actno = #{actno}
    &lt;/select&gt;

    &lt;select id="getAllAccount" resultType="com.ali.pojo.Account"&gt;
      select actno, balance
      from t_act
    &lt;/select&gt;
&lt;/mapper&gt;
</code></pre>
<ol start="6">
<li>编写service和service的实现类</li>
</ol>
<pre><code class="language-java">public interface AccountService {
    int addAccount(Account account);
    int updateAccount(Account account);
    int deleteAccount(String actno);
    Account getAccount(String actno);
    List&lt;Account&gt; getAllAccount();
}
</code></pre>
<pre><code class="language-java">@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&lt;Account&gt; getAllAccount() {
      return accountMapper.getAllAccount();
    }
}
</code></pre>
<ol start="7">
<li>编写jdbc.properties配置文件</li>
</ol>
<pre><code class="language-properties">jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring6?useSSL=false&amp;serverTimezone=UTC
jdbc.username=root
jdbc.password=yourpassword
</code></pre>
<ol start="8">
<li>编写mybaits-config.xml配置文件</li>
</ol>
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;
&lt;configuration&gt;

&lt;!--    打印mybatis的日志信息,sql语句等--&gt;
   &lt;settings&gt;
       &lt;setting name="logImpl" value="STDOUT_LOGGING"/&gt;
   &lt;/settings&gt;
&lt;/configuration&gt;
</code></pre>
<ol start="9">
<li>编写spring.xml配置文件</li>
</ol>
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;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"&gt;

&lt;!--    组件扫描--&gt;
&lt;context:component-scan base-package="com.ali" /&gt;
&lt;!--    引入外部的属性配置文件--&gt;
&lt;context:property-placeholder location="jdbc.properties" /&gt;
&lt;!--    数据源--&gt;
&lt;bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"&gt;
    &lt;property name="url" value="${jdbc.url}" /&gt;
    &lt;property name="username" value="${jdbc.username}" /&gt;
    &lt;property name="password" value="${jdbc.password}" /&gt;
    &lt;property name="driverClassName" value="${jdbc.driver}" /&gt;
&lt;/bean&gt;
&lt;!--    配置sqlSessionFactoryBean--&gt;
&lt;bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"&gt;
&lt;!--    注入数据源--&gt;
    &lt;property name="dataSource" ref="dataSource" /&gt;
&lt;!--    指定mybatis的配置文件位置--&gt;
    &lt;property name="configLocation" value="classpath:mybatis-config.xml" /&gt;
&lt;!--    指定别名--&gt;
    &lt;property name="typeAliasesPackage" value="com.ali.pojo" /&gt;
&lt;/bean&gt;

&lt;!--    Mapper扫描器,会自动扫描指定包下的mapper接口,并为其创建代理对象--&gt;
&lt;bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&gt;
    &lt;property name="basePackage" value="com.ali.mapper" /&gt;
&lt;/bean&gt;

&lt;!--    事务管理器--&gt;
    &lt;bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;
      &lt;property name="dataSource" ref="dataSource" /&gt;
    &lt;/bean&gt;
&lt;!--    启用事务注解--&gt;
    &lt;tx:annotation-driven transaction-manager="transactionManager" /&gt;
&lt;/beans&gt;
</code></pre>
<h1 id="在spring配置文件中引入子配置文件">在spring配置文件中引入子配置文件</h1>
<pre><code class="language-xml">&lt;!--    在spring.xml中引入其他的spring配置文件,common.xml中可以放置一些公共的bean定义
    ,例如一些工具类、常量等,这样就可以在多个配置文件中共享这些bean定义,避免重复定义。--&gt;
    &lt;import resource="common.xml" /&gt;
</code></pre>


</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:NE_STOP,转载请注明原文链接:https://www.cnblogs.com/alineverstop/p/19600534</p><br><br>
来源:https://www.cnblogs.com/alineverstop/p/19600534
頁: [1]
查看完整版本: spring6-与juint和mybatis的集成