SpringBoot-16-之整合MyBatis-xml篇+单元测试

简介: 此篇接上篇:SpringBoot-15-之整合MyBatis-注解篇+分页0.项目结构java dao |---SwordDao entity |---Swordresources mapper |---Sword.

此篇接上篇:SpringBoot-15-之整合MyBatis-注解篇+分页

0.项目结构
java
    dao
    |---SwordDao
    entity
    |---Sword
resources
    mapper
    |---Sword.xml
    application.yml

1.application.yml
#坑点0 配置mybatis的xml位置
mybatis:
  mapper-locations: classpath:mapper/*.xml
2.新建dao文件夹,新建dao接口:SwordDao.java
public interface SwordDao {

    List<Sword> findALL();

    Sword findByName(@Param("name") String name);
    //坑点1 java没有保存形参的记录,所以多参数用户@Param("name")起名字,不然无法识别
    int insert(@Param("name") String name,
                @Param("atk") Integer atk,
                @Param("hit") Integer hit,
                @Param("crit") Integer crit,
                @Param("attr_id") Integer attr_id,
                @Param("type_id") Integer type_id
    );
}
3.在resources下新建mapper文件夹,再建Sword.xml文件,为dao层提供SQL语句
<?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">
<!--坑点2:命名空间指向对应dao类名-->
<mapper namespace="com.toly1994.toly_mybatis.dao.SwordDao">
    <!--坑点3:id为dao中相应方法名-->
    <insert id="insert">
      insert into sword(name,atk,hit,crit,attr_id,type_id)
      values (#{name},#{atk},#{hit},#{crit},#{attr_id},#{type_id})
    </insert>
    <!--坑点4:返回实体或实体集合时 resultType 指向对应实体类名-->
    <select id="findByName" resultType="com.toly1994.toly_mybatis.entity.Sword">
        SELECT*FROM sword WHERE NAME=#{name}
    </select>

    <select id="findALL" resultType="com.toly1994.toly_mybatis.entity.Sword">
        SELECT*FROM sword
    </select>
</mapper>
4.将dao添加扫包范围:com.toly1994.toly_mybatis.TolyMybatisApplication
//坑点5:将dao添加扫包范围
@MapperScan(basePackages = {"com.toly1994.toly_mybatis.mapper","com.toly1994.toly_mybatis.dao"})

5.单元测试:test文件夹下
com.toly1994.toly_mybatis.dao.SwordDaoTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class SwordDaoTest {
    @Autowired
    private SwordDao mSwordDao;

    @Test
    public void findALL() {
        List<Sword> all = mSwordDao.findALL();
        System.out.println(all.get(5));
//Sword(id=6, name=风跃, atk=9020, hit=10, crit=10, attr_id=2, type_id=2)
    }

    @Test
    public void findByName() {
        Sword 赤凰 = mSwordDao.findByName("赤凰");
        System.out.println(赤凰);
//Sword(id=13, name=赤凰, atk=0, hit=100, crit=5, attr_id=1, type_id=2)
    }

    @Test
    public void insert() {
        int insert = mSwordDao.insert("尤恨", 4000, 100, 100, 1, 1);
        System.out.println(insert);//1
    }
}

6.联合查询:可能会疑惑attr_id和type_id是干嘛的,其实是两张关联表
联合查询.png
修改实体类两个字段:
@Data//=@Getter +@Setter
public class Sword {
    private Integer id;
    private String name;
    private Integer atk;
    private Integer hit;
    private Integer crit;
    private String type_name;//改为String
    private String attr;//改为String
}
修改查询所有的SQL语句
    <select id="findALL" resultType="com.toly1994.toly_mybatis.entity.Sword">
       SELECT id,name,atk,hit,crit,type_name,attr FROM sword AS s
      INNER JOIN sword_type AS t ON s.type_id = t.type_id
      INNER JOIN sword_attr AS a ON s.attr_id = a.attr_id;
    </select>
测试:可见两张表和主表连在一起了
    @Test
    public void findALL() {
        List<Sword> all = mSwordDao.findALL();
        System.out.println(all.get(5));
        //Sword(id=6, name=风跃, atk=9020, hit=10, crit=10, type_name=仙界, attr=木)
    }
相关文章
|
3月前
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
336 2
|
26天前
|
安全 Java 测试技术
springboot之SpringBoot单元测试
本文介绍了Spring和Spring Boot项目的单元测试方法,包括使用`@RunWith(SpringJUnit4ClassRunner.class)`、`@WebAppConfiguration`等注解配置测试环境,利用`MockMvc`进行HTTP请求模拟测试,以及如何结合Spring Security进行安全相关的单元测试。Spring Boot中则推荐使用`@SpringBootTest`注解简化测试配置。
|
1月前
|
缓存 Java 数据库连接
深入探讨:Spring与MyBatis中的连接池与缓存机制
Spring 与 MyBatis 提供了强大的连接池和缓存机制,通过合理配置和使用这些机制,可以显著提升应用的性能和可扩展性。连接池通过复用数据库连接减少了连接创建和销毁的开销,而 MyBatis 的一级缓存和二级缓存则通过缓存查询结果减少了数据库访问次数。在实际应用中,结合具体的业务需求和系统架构,优化连接池和缓存的配置,是提升系统性能的重要手段。
49 4
|
1月前
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
54 3
|
2月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
43 4
|
2月前
|
Java 数据库连接 数据库
spring和Mybatis的逆向工程
通过本文的介绍,我们了解了如何使用Spring和MyBatis进行逆向工程,包括环境配置、MyBatis Generator配置、Spring和MyBatis整合以及业务逻辑的编写。逆向工程极大地提高了开发效率,减少了重复劳动,保证了代码的一致性和可维护性。希望这篇文章能帮助你在项目中高效地使用Spring和MyBatis。
29 1
|
3月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
55 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
3月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
157 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
84 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
Java 测试技术 数据库连接
使用Spring Boot编写测试用例:实践与最佳实践
使用Spring Boot编写测试用例:实践与最佳实践
84 0