Mybatis讲解2

这篇博客详细介绍了Mybatis的单表操作,包括删除、单一查询、模糊查询和分页查询,并强调了#{}与${}的区别以及动态SQL语句的使用,如if、trim、choose、where、set和foreach,还提醒了在实际操作中需要注意的异常和解决办法。
摘要由CSDN通过智能技术生成

一.Mybatis的单表操作

1. 删除操作
1.1 Dao接口
//删除之参数是int类型
	public void deleteProductById(Integer id);
//删除之参数是实体类类型
	public void deleteProductByPojo(Product product)

1.2 Sql映射文件
<!-- 删除之主键删除id 
		注意:如果参数类型是基本数据类型,那么sql语句的参数名称可以随便起
	-->
	<delete id="deleteProductById" parameterType="int">
		delete from product where id=#{asfdsafasd}
	</delete>
	<!-- 删除之参数类型是pojo类
		注意:如果参数类型是pojo类类型,那么sql语句的参数名称不可以随便起,必须和当前实体类中的属性名称相对应
	-->
	<delete id="deleteProductByPojo" parameterType="product">
		delete from product where id=#{id}
	</delete>

1.3测试类
// 删除之参数类型是基本数据类型
   @Test
   public void demo4() {
   
   	session.getMapper(ProductMapper.class).deleteProductById(44);
   }
   // 删除之参数类型是pojo类型
   @Test
   public void demo5() {
   
   	Product product = new Product();
   	product.setId(24);
   	session.getMapper(ProductMapper.class).deleteProductByPojo(product);
   }

1.4 常见问题:
  • 如果当前sql映射文件中的参数名称不匹配实体类参数类型里的属性名称的话,则报一下异常。解决办法就是把sql语句的参数名称和实体类的属性名称一致。
2. 单一查询
2.1 dao接口
  //单一查询      
public Product selectProductByPrimarykey(Integer id);  
2.2 sql映射文件
<!-- 单一查询 
		parameterType表示参数类型,如果参数类型是基本数据类型的话,可以不用起别名直接使用
	-->
	<select id="selectProductByPrimarykey" parameterType="int" resultType="product">
		select 
			<include refid="basesql"/>
		from product where id=#{id}
	</select>

2.3 测试类
// 单一查询
		@Test
		public void demo6() {
   
			Product product = session.getMapper(ProductMapper.class).selectProductByPrimarykey(21);
			System.out.println(product);
		}

2.4 查询的常见问题
  • 注意:如果在查询的select标签中没有添加结果集属性,则会报以下异常,问题在于所有的查询的select标签中都必须加入结果集属性resultType或者resultMap。
3.模糊查询
3.1 dao接口
//模糊查询之普通类型
	public List selectProductBySearch(String name);
	//模糊查询之pojo
	public List selectProductBySearch1(Product product);
	//模糊查询之pojo2
	public List selectProductBySearch2(Product product);
	//模糊查询之map
	public List selectProductBySearch3(Map map);

3.2 sql映射文件
<!-- 1. 如果说参数类型是普通类型,那么在执行模糊查询的时候,只能使用#{}进行拼接查询 -->
	<select id="selectProductBySearch" parameterType="java.lang.String" resultType="products">
		select 
		 	<include refid="basesql"/>
		 from product 
		  where name like CONCAT(CONCAT('%',#{name},'%'))
	</select>
<!-- 2.模糊查询之模糊查询  之以${}形式
		参数必须是实体类类型,sql语句中参数名称不可以随意起,必须是实体类的属性名称	-->
	<select id="selectProductBySearch1" parameterType="products" resultType="products">
		select 
		 	<include refid="basesql"/>
		 from product 
		  where name like '%${name}%'
	</select>
	
<!-- 3.采用#{} -->
	<select id="selectProductBySearch2" parameterType="products" resultType="products">
		select 
		 	<include refid="basesql"/>
		 from product 
		  where name like "%"#{name}"%"
	</select>

<!--4.如果参数类型是map类型,那么sql语句中参数值一定是map集合中的key值 -->
	<select id="selectProductBySearch3" parameterType="map" resultType="products">
		select 
		 	<include refid="basesql"/>
		 from product 
		  where name like CONCAT(CONCAT('%',#{aaa},'%'))
	</select>

3.3 测试类
//模糊查询之普通类型
@Test
public void search2(){
   
	String name="p";
	List<Product>products =               	session.getMapper(ProductMapper.class)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值