栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

什么是MyBatis框架 第三节

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是MyBatis框架 第三节

1.动态sql 1.1.set标签

这个配合if标签一起用,一般用在修改语句。如果传递的参数值为null,那么应该不修改该列的值。

dao接口

import com.wzl.entity.One;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface OneDao {
    public void update(One one);
   

mapper类





    
        id,name,age,created
    

        
    
    
        update tb_stu
        
            
                name=#{name},
            
            
                age=#{age},
            
            
                created=#{created},
            
        
        where id=#{id}
    
2.2 foreach标签

循环标签.

查询:

dao接口

//根据多个id查询记录
    public List findList(Integer[] ids);

 mapper类


    
        select
        
        from tb_stu where id in
        
            #{ids}
        
    

删除:

dao类

//根据多个id删除记录
    public int deleteList(Integer[] ids);

mapper类


        
            #{ids}
        
    

添加:

dao类

//批量添加
    public int addList(List ones);

mapper类


        insert into tb_stu (name , age , created) values
        
            (#{ids.name},#{ids.age},#{ids.created})
        
    
2.3 sql片段

在执行查询语句时不建议大家使用select *, 建议大家把查询的列写出。

3. mybatis映射文件处理特殊字符.

dao类

//查询id大于某个数且小于某个数
    public List findListM(@Param("min") Integer min, @Param("max") Integer max);

mybatis


    
       

        select * from tb_stu where name like '%${name}%'

    

通过观察: 发现使用${}实际上是字符串拼接,它不能防止sql注入, 而#{}它是预编译,它可以防止sql注入问题,#{}实际使用的PreparedStatement.

动态sql标签: if  where (choose when otherwise)  set  foreach sql
处理特殊字符:  转义符
模糊查询: concat('',#{},'')    ${}

5. 联表查询

多对一 : 从多的一方来查询一的一方。

班级表:

|1-n

学生表:

根据学生id查询学生信息并携带班级信息。

select
*
from stu_student s join cla_class c on s.class_id=c.cla_id where stu_id=1

实体类:

package com.wzl.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private int id;
    private String name;
    private int age;
    private String sex;
    private Integer classId;

    //好想法  学生所在的班级
    public Cla cla;
    //最终  是想着如何联表查询  体现到  实体类上去
}




//班级表
package com.wzl.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Cla {
    private int claId;
    private String claName;
}

dao类:

package com.wzl.dao;

import com.wzl.entity.Student;

public interface StudentDao {
    //public Student findListOne(int id);

    //根据id查询学生信息带上班级信息
    public Student findListById(int id);
}

xml:


        
        
        
        
        
        
        
            
            
        

    

    
        select
        
        from stu_student s join cla_class c on s.class_id=c.cla_id where stu_id=#{id}
    

上面你要是绝的没有懂,那么这里可以使用的一个笨的方式: 但是不推荐。

返回类型就用map封装

//根据学生编号查询学员信息以及班级信息
 public Map findById(Integer id);

    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号