前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot-16-之整合MyBatis-xml篇+单元测试

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

作者头像
张风捷特烈
发布2018-09-26 17:06:50
1.5K0
发布2018-09-26 17:06:50
举报

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

0.项目结构
代码语言:javascript
复制
java
    dao
    |---SwordDao
    entity
    |---Sword
resources
    mapper
    |---Sword.xml
    application.yml

1.application.yml
代码语言:javascript
复制
#坑点0 配置mybatis的xml位置
mybatis:
  mapper-locations: classpath:mapper/*.xml
2.新建dao文件夹,新建dao接口:SwordDao.java
代码语言:javascript
复制
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语句
代码语言:javascript
复制
<?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
代码语言:javascript
复制
//坑点5:将dao添加扫包范围
@MapperScan(basePackages = {"com.toly1994.toly_mybatis.mapper","com.toly1994.toly_mybatis.dao"})

5.单元测试:test文件夹下
com.toly1994.toly_mybatis.dao.SwordDaoTest
代码语言:javascript
复制
@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

修改实体类两个字段:
代码语言:javascript
复制
@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语句
代码语言:javascript
复制
    <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>
测试:可见两张表和主表连在一起了
代码语言:javascript
复制
    @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=木)
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.项目结构
  • 1.application.yml
  • 2.新建dao文件夹,新建dao接口:SwordDao.java
  • 3.在resources下新建mapper文件夹,再建Sword.xml文件,为dao层提供SQL语句
  • 4.将dao添加扫包范围:com.toly1994.toly_mybatis.TolyMybatisApplication
  • 5.单元测试:test文件夹下
    • com.toly1994.toly_mybatis.dao.SwordDaoTest
    • 6.联合查询:可能会疑惑attr_id和type_id是干嘛的,其实是两张关联表
      • 修改实体类两个字段:
        • 修改查询所有的SQL语句
          • 测试:可见两张表和主表连在一起了
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档