@param参数绑定
简单数据类型
在Mapper的 Student findStudentByNameAndAddress(@Param("name"),@Param("addr") String name, 参数绑定使用
select * from Student w here name=#{name} and address=#{addr}
复杂数据类型
select * from student where name=#{name} and birthday=#birthday=#{birthday} map.put("name","");map.put("birthday","")
动态sql语句
mybatis是否启用连接池的区别
启用连接池时事物改为手动事务结束之后将资源归还给连接池
不启用连接池的时候改为自动提交 结束之后直接关闭连接对象
当数据库表中的字段和实体类属性不相同时
1 基本映射 和实体类的属性名称相同 起别名 (每次查询的时候都需要起别名 过于繁琐)
2 mybitis 高级映射 在映射文件中定义resultMap然后增删改 查询语句中将resultMap引入
ResultMap里面就是可一讲每一个字段和实体类的属性一一映射
mybatis里动态标签的判断语句
select * from student where name=#{stuName} and address=#{stuAddress}
使用where 关键字代替标签 简化sql语句
select * from student <!--动态sql判断 将重复端的sql语句抽离出来 在其他sql中引入sql片段即可-->
<sql id="mySelectSql">
select * from student
</sql>
建议看官网
foreach
动态sql的一个常见使用场景是对集合便利尤其是在构建IN语句时
Select * from Post p where ID in #{item}
</foreach>
</select>
lobbok
@Data
@AllArgsConstruct
@NoArgsConstructor
一对多和一对一的前期配置
实体属性对应的字段名称
创建两个类
继承关系 账户和账户实体
主要通过重写 toString super toString 拼接实现
弊端 局限性会产生耦合性程序间需要解耦降低耦合性
并不建议去使用
在 xml配置映射文件
使用 <对象.属性名>的方式进行映射
使用嵌套结果ResultMap实现一对一的关系映射