mybatis实现用户查询

此文档以哔哩哔哩up主黎曼的猜想发表的SSM框架合集为基础总结讲述idea下如何利用mybatis实现用户查询操作,此处记录,以便后续查阅复习总结之。

视频链接为:https://www.bilibili.com/video/BV1mE411X7yp?p=24
注:此文档以https://blog.csdn.net/qq_58156653/article/details/119302292(mybatis入门环境搭建,test测试控制台输出数据库信息)为基础

首先说明,笔者代码层级结构如下:
 mybatis实现用户查询_第1张图片

 1.在持久层(dao包)接口Iuserdao中添加查询方法findById

全部代码如下:

package dao;
import domin.User;
import java.util.List;

public interface Iuserdao {
    /** 
     *  查询所有用户
     */
    List findAll();
    //保存用户方法
    void saveUser(User user);
//更新用户方法
    void updateUser(User user);
    //删除用户方法
    void deleteUser(User user);
    //查询用户
    User findById(User user);
}

2.在对应的映射配置Iuserdao.xml中配置保存方法的映射,使用select

标签

注:使用id查询的话这里也可以写为parameterType="int"

注:使用select标签,id中的值为方法名称,user中为实体中User的属性。values代表所操作的数据。

sql语句使用#{}字符:它代表占位符,相当于原来jdbc中的,都是用于执行语句时替换实际的数据。具体的数据是由#{}中的内容所决定的。

#{}中内容的写法:由于我们保存方法的参数是一个User对象,此处要写User对象中属性的名称,它使用的是oqnl表达式。

所谓的oqnl表达式是oqnl官方提供的一种表达式语言,它按照一定的语法格式来获取数据,即#{对象.对象}

例如#{user.username}它会先找user对象,然后在user对象中找到username属性,并调用getUsername()方法取值,若在parameterType中指明了实体类名称,例如parameterType="domin.User",则不再需要写user,可以直接写username,即#{对象}

mybatis实现用户查询_第2张图片

 全部代码如下:




    

    
    
        select last_insert_id();
    
        
       
                insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
            
    
    
        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}
    
    
    
        delete from user where  id=#{id}  address=#{address}
    
    
    
        

3.在测试类Test中添加测试方法

mybatis实现用户查询_第3张图片

 全部代码如下:

import dao.Iuserdao;
import domin.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;

import java.io.InputStream;
import java.util.List;
public class Test {
    private  InputStream in;
    private SqlSession sqlSession;
    private Iuserdao userdao;
@Before//在测试方法执行之前执行
    public void init()throws Exception{
         in= Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
         sqlSession=factory.openSession();
         userdao=sqlSession.getMapper(Iuserdao.class);
    }
    @After//用于在测试方法执行之后执行
    public void destroy()throws Exception{
        //释放资源
                sqlSession.close();
        in.close();
    }
@org.junit.Test
    public void testFindAll() {


        List users=userdao.findAll();
        for(User user:users){
            System.out.println(user);
        }

    }
//    测试方法
    //测试保存操作
    @org.junit.Test
    public void testSave(){
    User user=new User();

    user.setUsername("dfggfhd");
    user.setAddress("啊啊啊啊啊啊啊啊啊");
    user.setSex("fgg阿尔法hj");
    user.setBirthday("19由dcfd阮fdg经天7");
    //执行保存方法
userdao.saveUser(user);
//提交事务
sqlSession.commit();
    }
    //    测试方法
    //测试更新操作
    @org.junit.Test
    public void testUpdate(){
        User user=new User();
user.setId(10);
        user.setUsername("老王");
        user.setAddress("北京");
        user.setSex("男");
        user.setBirthday("2001-02-17");
        //执行保存方法
        userdao.updateUser(user);
//提交事务
        sqlSession.commit();
    }
    //    测试方法
    //测试删除操作
    @org.junit.Test
    public void testDelete(){
        User user=new User();
      //  user.setId(48);
       // user.setAddress("星际监狱");
        user.setId(72);
        userdao.deleteUser(user);
//提交事务
        sqlSession.commit();
    }
    //    测试方法
    //测试根据id查询操作
    @org.junit.Test
    public void testfindOne(){
        User user=new User();
        user.setId(11);
        if(userdao.findById(user)==null){
            System.out.println("---查无此人---");
        }
        else {
            System.out.println("---查询成功---");
            System.out.println(user);
            System.out.println("------------");
        }
//提交事务
        sqlSession.commit();
    }
}


//import domin.User;
//import dao.Iuserdao;
//import org.apache.ibatis.io.Resources;
//import org.apache.ibatis.session.SqlSession;
//import org.apache.ibatis.session.SqlSessionFactory;
//import org.apache.ibatis.session.SqlSessionFactoryBuilder;
//
//import java.io.InputStream;
//import java.util.List;
//
mybatis入门案例
//public class Test {
//    public static void main(String[] args) throws Exception{
1.读取配置文件
//        InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
2.创建SqlSessionFactory工厂
//        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//        SqlSessionFactory factory=builder.build(in);
3.使用工厂生产SqlSession对象
//        SqlSession session=factory.openSession();
4.使用SqlSession创建Dao接口的代理对象
//        Iuserdao userDao=session.getMapper(Iuserdao.class);
5.使用代理对象执行方法
//        List users=userDao.findAll();
//        for(User user:users){
//            System.out.println(user);
//        }
6.释放资源
//        session.close();
//        in.close();
//    }
//}

查看控制台发现打印成功

mybatis实现用户查询_第4张图片

此外,在查询时也可以使用模糊查询

 1.在持久层(dao包)接口Iuserdao中添加模糊查询方法findByUser

注:此时把查询到的数据封装在列表中

2.在对应的映射配置Iuserdao.xml中配置保存方法的映射,使用select

标签

注:此时使用like实现模糊查询

mybatis实现用户查询_第5张图片

 3.在测试类Test中添加测试方法

注:此时使用%通配符实现模糊查询

注:此时把查询到的数据封装在列表中

mybatis实现用户查询_第6张图片

此外,在查询时也可以查询总用户数

 1.在持久层(dao包)接口Iuserdao中添加模糊查询方法findTotal

2.在对应的映射配置Iuserdao.xml中配置保存方法的映射,使用select

标签

mybatis实现用户查询_第7张图片

 3.在测试类Test中添加测试方法

mybatis实现用户查询_第8张图片

 控制台打印成功

mybatis实现用户查询_第9张图片

拓展一

1.使用resultType : 主要针对于从数据库中提取相应的数据出来

2.使用parameterType :主要针对于将信息存入到数据库中,如:insert 增加数据到数据库中,  Update更新等

3.在MyBatis中,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方法的参数类型一致),通过resultType完成输出映射(从数据库中输出,通过dao层的方法查询到的数据输出到pojo对象中)。 注意输入与输出都是相对于数据库的

4.parameterType:指定输入参数类型,mybatis获取参数值拼接在sql中。

5.resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中

6.parameterType写在前面 ,resultType写在后面

一般而言,更新和删除只写parameterType

mybatis实现用户查询_第10张图片

 查询既要写parameterType也要写resultType且顺序必须是parameterType写在前面 ,resultType写在后面

mybatis实现用户查询_第11张图片

 增加比较特殊

mybatis实现用户查询_第12张图片

拓展二

在对应的映射配置Iuserdao.xml中配置查询方法的映射,也可以使用if标签以及where标签实现多条件查询

例如:


也可以写为:


拓展三

实现查询出多个值,实现 select * from user where id in(1,2,3,4)效果

在对应的映射配置Iuserdao.xml中配置查询方法的映射

代码如下:



标签用于遍历集合,它的属性:

collection:代表要遍历的集合元素,注意不能写#{}

open:代表语句的开始部分

close:代表语句的结束部分

item:代表遍历集合的 每个元素,生成的变量名

sperator:代表分隔符

你可能感兴趣的:(mybatis,java,maven,mybatis)