Spring Boot 整合MyBatis框架(基础练习1,删除、查询)

前提(创建数据库 并连接)

1.(数据库自己创建)
2.添加依赖。在这里插入图片描述
在这里插入图片描述
在小树叶添加如下配置

spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root

一.初始配置

1.添加mybatis启动依赖

添加方式一:将下边代码片添加到 pom.xml 的 dependencise 里

 <dependency>
                        <groupId>org.mybatis.spring.boot</groupId>
                        <artifactId>mybatis-spring-boot-starter</artifactId>
                        <version>2.1.3</version>
        </dependency>

添加方式二:到官网找上述代码片 (网址 mybatis.org/spring >Spring Boot>Maven)

2.Mybatis简易配置 (尝试过了 不加也不报错)

  1. 假如需要对mybatis框架进行简易配置,可以打开application.properties文件(小树叶),在此文件中进行基本配置(可选,暂时可以不配置),例如:
mybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true
  1. 配置mybatis中的sql日志的输出:(com.cy为我们写的项目的根包)
logging.level.com.cy=DEBUG

二. 业务分析及实现(删除练习)

在MyBatis框架中定义SQL映射的方式有两种:一种是将SQL映射定义在我们的xml映射文件中,一种方式是借助注解将其声明在接口方法上。我们在实际项目中对于简单的SQL映射可以直接以注解方式进行声明即可,复杂SQL还是要写到xml中,充分利用动态SQL进行设计会更好一些。

1. 基本业务实现及单元测试(声明在接口方法上)

  1. 业务API架构设计在这里插入图片描述
  2. 基于id执行商品信息删除在这里插入图片描述
  3. 定义商品业务数据层接口及业务方法
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GoodsDao {
         @Delete("delete from tb_goods where id=#{id}")
         int deleteById(Integer id);
}

@Mapper是由MyBatis框架中定义的一个描述数据层接口的的注解(所有的注解只起到一个描述性的作用),用于告诉Spring框架此接口的实现由mybatis创建,并将其实现类对象存储到spring容器.

  1. 定义测试类,对GoodsDao对象进行应用测试
@SpringBootTest
public class GoodsDaoTests {    
   @Autowired
   private GoodsDao goodsDao;
        @Test
        public void testDeleteById() {
                int rows=goodsDao.deleteById(10);
                System.out.println("rows="+rows);
        }
}

在这里插入图片描述
在这里插入图片描述
上图 展示业务设计中API对象的一种调用关系。例如我们的数据访问对象调用MyBatis API,然后MyBatis API底层通过使用用JDBC API(两大部分:java.sql., javax.sql.)访问数据库。


2. 业务进阶分析及实现 (批量删除 创建xml实现)

  1. 在GoodsDao中,定义删除方法,具体代码如下
int deleteObjects(@Param("ids")Integer... ids);
  1. 在src/main/resources目录下创建mapper目录,然后在其目录中添加GoodsMapper.xml映射文件(文件名可自己指定),并添加如下
<?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.cy.pj.goods.dao.GoodsDao">
   <delete id="deleteObjects">
       delete from tb_goods
       where id in <!-- (1,2,3,4,5) -->
       <foreach collection="ids"
                open="("
                close=")"
                separator=","
                item="id">
               #{id}
       </foreach>
   </delete>
</mapper>
  1. 在application.properties(小树叶)文件中添加如下配置
mybatis.mapper-locations=classpath:/mapper/*.xml

.xml映射有多少父目录,mapper后加几个 /*

  1. 在GoodsDaoTests类中添加如下单元测试方法进行单元测试
@Test
public void testDeleteObjects() {
                int rows=goodsDao.deleteObjects(17,18);
                System.out.println(rows);
}

对于本小节映射文件中deleteObjects元素的定义,是否还有更好的方式。例如增强其健壮性(可靠性-无论传什么数据,都可以保证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">
<mapper namespace="com.cy.pj.goods.GoodsDao">
   <delete id="deleteObjects">
       delete from tb_goods
       <where>
       	<if test="idssa!=null and idssa.length!=0">
       	  id in <!-- (1,2,3,4,5) -->       
       		<foreach collection="idssa"
                open="(" close=")" separator="," item="id">
               	#{id}
           	 </foreach>
         </if>
         or 1=2
       </where> 
   </delete>
</mapper>

三. 业务分析及实现(查询)

在这里插入图片描述

实现商品信息的查询,并将查询到的数据在测试类中进行输出

  1. 定义pojo对象(Goods)用于存储从数据库查询到的商品信息.
  2. 定义dao方法方法,用于查询数据库数据。
  3. 定义业务层接口以及实现类,然后在类中添加商品查询的业务方法。
  4. 定义单元测试类,对业务层方法进行单元测试
    (共五个类 1.Goods类 2.GoodsDao接口 3.GoodsService接口 4.GoodsServiceImp类 5.GoodsServiceTest测试类)

具体步骤

注意导包

  1. Goods对象定义
import java.util.Date;

public class Goods {
	private Long id;
	private String name;
	private String remark;
	private Date createTime;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Override
	public String toString() {
		return "Goods [id=" + id + ", name=" + name + ", remark=" + remark + ", createTime=" + createTime + "]";
	}
}
  1. GoodsDao中添加查询方法(一行记录映射为一个Goods对象)
@Mapper
public interface GoodsDao {	
	@Select("select * from tb_goods")
	List<Goods> findObjects();
}

或者 @Select(“select * from tb_goods”)

  1. 添加GoodsService接口
public interface GoodsService {
          List<Goods> findGoods();
}
  1. 添加GoodsServiceImp实现类
@Service
public class GoodsServiceImpl implements GoodsService {        
        @Autowired
        private GoodsDao goodsDao;
        @Override
        public List<Goods> findGoods() {
                List<Goods> list=goodsDao.findObjects();
                return list;
        }
}
  1. 添加单元测试类
@SpringBootTest
public class GoodsServiceTests {
        @Autowired
        private GoodsService goodsService;
        @Test
        public void testFindGoods() {
                List<Goods> list=goodsService.findGoods();
                for(Goods g:list) {
                        System.out.println(g);
                }
                list=goodsService.findGoods();
        }//
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值