Mybatis的数据传输

再查询语句中如果我们用写好的类进行接收数据,如果数据多返回的就是一个 List<类型>。这些类中的属性对应表中的字段

当实体属性和数据库表字段不相同时无法自动封装

解决方法

1 起别名

还可以使用sql语句段提升复用性、使用时调用这个sql语句段

2 resultMap:定义<resultMap>完成不一致的属性和列名的映射,使用时将原来的resultType替换为

resultMap,语法:resultMap="id"。


 
    <resultMap id="brandResultMap" type="brand">

        <result column="brand_name" property="brandName"></result>
        <result column="company_name" property="companyName"></result>

    </resultMap>


    <sql id="brand_column">
   id,brand_name as brandName,company_name as companyName,ordered,description,status
       </sql>

参数占位符: #{参数名}:在执行SQL时,会将#{}占位符替换为?,将来自动设置参数

                     ${参数名}:拼接SQL,会存在SQL注入问题

使用时机: 参数传递都用#{}

如果要对表名、列名进行动态设置,只能用${}

3对特殊字符的处理

1 转义字符

2 <![CDATA[内容】

传参数的三种方式

1. 散装参数

List<Brand> selectByCondition(@Param("status")int status,@Param("companyName")String companyName,@Param("brandName")String brandName);

@Param注解给起了一个新键值,因为底层会把传入的参数存到一个Map中,在调用sql时从根据键值来去。默认·一个值对应两个键值agr和param ,当然也可以可以不用@pParam取别名,但是这样在Sql语句中变量名就必须要使用agr0或param1这样的名字,但这样是代码的可读性变得非常差,所以不推荐使用。我们取得键值名都是和对应的sqL语句中的参数名相同的

2 传入类POJO对象

将数据封装到对象中再传入

List<Brand> selectALL(Brand);

3 传入Map

将对应参数名和参数类型存入一个Map,再作为参数传入

List<Brand> selectALL(Map)

动态sql

Mybatis提供了类似if switch的标签,进行动态增删查改

if

choose otherwise

trim

foreach

具体可以去看Mybatis官网,讲的很详细

对于第一个条件不需要逻辑运算符的问题

可以使用<where>标签替换where

具体去看官网

使用注解进行开发

对于些简单的sql语句,我们如果写在sqL映射文件显得很繁琐,这个时候就可以使用注解进行开发

。查询:@Select、

。添加:@Insert

。修改:@Update

。删除:@Delecte

这个注解写Mapper接口中,要和方法连接在一起,注解在上,方法在下

例子;

@Select("select * from tb_User where id=#{id}")
public User selectById(int id);
//这个方法名就可以随便起一个了,因为没有写在映射文件中。这两个是连在一起的。再使用时调用方法就可以了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值