Mybatis进阶

Mybatis高级查询

package com.demo.domain;

import lombok.Data;

import java.util.Date;

@Data
public class User {
    private Integer id;
    private String usernameabc;
    private String passwordabc;
    private Date birthdayab;
    private String sexabc;
    private String addressabc;
}
package com.demo.mapper;

import com.demo.domain.User;

import java.util.List;

public interface UserMapper {

    /*
        根据id查询用户
     */
    public User findUserById(int id);

    /**
     * 查询所有用户
     * @return
     */
    public List findAllResultMap();
}
<?xml version="1.0" encoding="UTF-8" ?>


    
    

    
    
        
        
        
        
        
        
        
        
    

    
    
    
public List findByIdAndUsername1(int id, String username);

public List findByIdAndUsername2(@Param("id") int id,@Param("username") String username);
public List findByIdAndUsername3(User user);

public List findByUsernameLike(String username);

List users = mapper.findByUsernameLike("%aa%");

users.forEach(System.out::println);

List users = mapper.findByUsernameLike("%aa%");

users.forEach(System.out::println);

Mybatis映射文件深入

向数据库插入一条记录后,能立即拿到这条记录在数据库的主键值。

只适用于主键自增的数据库,mysql和sqlserver支持,oracle不支持。




  insert into user (username, birthday, sex, address) values (#{username}, #{birthday}, #{sex}, #{address})

适用范围更广,支持所有类型的数据库




    
      SELECT LAST_INSERT_ID();
		

		insert into user (username, birthday, sex, address) values (#{username}, #{birthday}, #{sex}, #{address})

动态SQL之:不确定两个都有值

动态SQL之:有值更新;没有值不做处理

    
    
        update user
            
            
                
                    username = #{username},
                
                
                    birthday = #{birthday},
                
                
                    sex = #{sex},
                
                
                    address = #{address},
                
            
                where id = #{id}
    

动态SQL之:数据的循环遍历

    
    

SQL片段

映射文件中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。

Mybatis核心配置文件深入

    
    
      com.github.pagehelper
      pagehelper
      5.3.1
    

    
      com.github.jsqlparser
      jsqlparser
      4.5
    
    
        
    
        // 设置分页参数
        // 参数1: 当前页
        // 参数2: 每页显示的条数
        // 一定要写在调用数据库的上面
        PageHelper.startPage(1, 1);

        List users = mapper.findAllResultMap();
        for (User user : users) {
            System.out.println("user = " + user);
        }

        // 获取分页相关的其它参数
        PageInfo pageInfo = new PageInfo<>(users);
        // 总条数
        long total = pageInfo.getTotal();
        // 总页数
        int pages = pageInfo.getPages();
        // 当前页
        int pageNum = pageInfo.getPageNum();
        // 每页显示长度
        int pageSize = pageInfo.getPageSize();
        // 判断是否第一页
        boolean isFirstPage = pageInfo.isIsFirstPage();
        // 是否最后一页
        boolean isLastPage = pageInfo.isIsLastPage();

Mybatis多表查询

package com.demo.domain;

import lombok.Data;

@Data
public class Orders {
    private Integer id;
    private String ordertime;
    private Double total;
    private Integer uid;
    private User user;
}
package com.demo.domain;

import lombok.Data;

import java.util.Date;

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private Date birthday;
    private String sex;
    private String address;
}

<?xml version="1.0" encoding="UTF-8" ?>


    
    
        
        
        
        

        
        
            
            
            
            
            
        
    
    

<?xml version="1.0" encoding="UTF-8" ?>



    
        
        
        
        
        

        
        
            
            
            
            
        
    
    

package com.demo.domain;

import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private Date birthday;
    private String sex;
    private String address;

    // 一个用户多个角色
    private List roleList;
}
package com.demo.domain;

import lombok.Data;

@Data
public class Role {
    private Integer id;
    private String rolename;
    private String roleDesc;
}
<?xml version="1.0" encoding="UTF-8" ?>


    
        
        
        
        
        

        
            
            
            
        
    

    

嵌套查询

将原来多表查询中的联合查询语句拆成单个表的查询,再使用mybatis的语法嵌套在一起。

package com.demo.domain;

import lombok.Data;

@Data
public class Orders {
    private Integer id;
    private String ordertime;
    private Double total;
    private Integer uid;

    private User user;
}
<?xml version="1.0" encoding="UTF-8" ?>



    
        
        
        
        

        
    

    
    
<?xml version="1.0" encoding="UTF-8" ?>


    
    

package com.demo.domain;

import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private Date birthday;
    private String sex;
    private String address;
    private List ordersList;
}
<?xml version="1.0" encoding="UTF-8" ?>


    
    
        
        
        
        
        

        
    

    
<?xml version="1.0" encoding="UTF-8" ?>


    

package com.demo.domain;

import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private Date birthday;
    private String sex;
    private String address;
    private List roleList;
}
<?xml version="1.0" encoding="UTF-8" ?>


    
    
        
        
        
        
        

        
    

    
<?xml version="1.0" encoding="UTF-8" ?>


    
展开阅读全文

页面更新:2024-06-04

标签:进阶   目的   遍历   嵌套   注解   参数   方式   数据库   文件   动态   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top