MyBatis做简单的增删改查,超级详细,保证一看就会

MyBatis做简单的增删改查,超级详细,保证一看就会

工具:
idea

环境:
mysql

步骤:
1.导入相关的jar包
2.将需要的包结构建好
3.配置文件中,配置数据库相关信息,引入mapper.xml文件
4.写sql语句
5.测试

  • 单个插入
  • 批量插入
  • 通过id进行 查询
  • 查询所有信息
  • 通过username进行模糊查询
  • 单个删除
  • 批量删除
  • 修改

准备工作先做好,导jar包,需要的项目结构
1.导入相关的jar包
这里通过maven来管理jar包,在pom.xml中进行配置
需要的jar包
mysql的包
mybayis的包
junit的测试包



  4.0.0

  org.fh
  mybaits_first
  1.0-SNAPSHOT
  war

  mybaits_first
  
  http://www.example.com

  
    UTF-8
    1.7
    1.7
    4.1.7.RELEASE
    4.3.11.Final
  

  
    
    
      org.mybatis
      mybatis
      3.4.6
    


  mysql
  mysql-connector-java
  5.1.6




  junit
  junit
  4.12

  

2.将需要的包结构建好
1.maper类
2.实体类
3.SqlMapConfig.xml文件,里边配置数据库相关的,包括引入相关的mapper文件
4.相关的mapper.xml文件
5.测试类

如图:
MyBatis做简单的增删改查,超级详细,保证一看就会_第1张图片
MyBatis做简单的增删改查,超级详细,保证一看就会_第2张图片

3.配置文件中,配置数据库相关信息,引入mapper.xml文件




    
        
            
            
            
                
                
                
                
            
        
    

    
        
        
    


准备工作已做好,开始做基础的增删改查

增加

单个增加
UserMapper.java中,写一个新增的有参数,无返回值的方法
MyBatis做简单的增删改查,超级详细,保证一看就会_第3张图片
userMapper.xml文件
超级全面的注释,看不懂多看几遍,绝对明白了

MyBatis做简单的增删改查,超级详细,保证一看就会_第4张图片
userMapper.xml文件代码





    
    
    

        
        select LAST_INSERT_ID() 
        
        insert  into  t_user_idea(user_id,user_name,user_sex) values
            (#{userId},#{username},#{sex})
    

测试是否成功
UserMapperTest.java

@Test
    public void insetUserTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();
        //        //进行赋值
        User user = new User();
        // dept.setDeptId(1);
        user.setUsername("部门22");
        user.setSex(1);
        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        int count = sqlSession.insert("com.fh.mapper.UserMapper.insertUser",user);
        //手动提交事务,因为mysql自动提交时间不确定。
        sqlSession.commit();
        System.out.println("插入数据条数:"+count);
        //关闭session会话
        sqlSession.close();

    }

单个插入完成

批量插入

UserMapper.java

 //批量插入
  int batchInsertUser(List userList);

userMapper.xml
MyBatis做简单的增删改查,超级详细,保证一看就会_第5张图片

 
    

        

        insert  into t_user_idea(user_id,user_name,user_sex) values
        
            (#{user.userId},#{user.username},#{user.sex})
        
    

测试
UserMapperTest.java

/**
     * 批量插入
     * @throws IOException
     */
    @Test
    public void batchInsertUserTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();
        //        //进行赋值
        List userList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setUsername("username" + i);
            user.setSex(1);
            userList.add(user);
        }
        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        int count = sqlSession.insert("com.fh.mapper.UserMapper.batchInsertUser",userList);
        //手动提交事务,因为mysql自动提交时间不确定。
        sqlSession.commit();
        System.out.println("插入数据条数:"+count);
        //关闭session会话
        sqlSession.close();
    }

批量插入完成

未完待更新

通过id查询数据

UserMapper.java

//通过ID进行查询
    User findUserById(Integer userId);

userMapper.xml

 
    
    

UserMapperTest.java

 @Test
    public void findUserByIdTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
         SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();

        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        //这里调用的是selectOne方法,只能查询一条指定的数据,
        // 如果用它查询多条数据,会报异常(查询多条要用selectList)
        User user = sqlSession.selectOne("com.fh.mapper.UserMapper.findUserById",11);
        System.out.println(user);
        //关闭session会话
        sqlSession.close();

    }

结果:
在这里插入图片描述

查询所有信息

UserMapper.java

//查询所有信息
    User findAllUser();

userMapper.xml

 

    

测试
UserMapperTest.java

 /**
     * 查询所有信息
     * @throws IOException
     */
    @Test
    public void findAllUserTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();

        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        //这里调用的是selectOne方法,只能查询一条指定的数据,
        // 如果用它查询多条数据,会报异常(查询多条要用selectList)
        List userList = sqlSession.selectList("com.fh.mapper.UserMapper.findAllUser");
        for (User user:userList) {
            System.out.println(user);
        }
        //关闭session会话
        sqlSession.close();
    }

结果:
MyBatis做简单的增删改查,超级详细,保证一看就会_第6张图片

通过username进行模糊查询

UserMapper.java

//通过name进行模糊查询
    User findUserByUserName(String username);

userMapper.xml


    

UserMapperTest.java

	/**
     * 通过name进行模糊查询
     * @throws IOException
     */
    @Test
    public void findUserByUserNameTest() throws IOException {
        String resource="SqlMapConfig.xml";
        //读取配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //连接上数据库
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        //开启会话
        SqlSession sqlSession = factory.openSession();
        //第一个参数定位带ClothingMapper.xml的findClothingByName方法
        //第二个参数的是findClothingByName方法的参数
        List userList =  sqlSession.selectList("com.fh.mapper.UserMapper.findUserByUserName","2");
        for (User user:userList) {
            System.out.println(user);
        }
        System.out.println(userList.size());
    }

结果:
在这里插入图片描述

通过username和sex进行条件查询

UserMapper.java

//通过username和sex进行模糊查询
    User queryUserByNameAndSexList(User user);

userMapper.xml


    

测试
UserMapperTest.java

	/**
     * 通过username和sex进行条件查询
     * @throws IOException
     */
    @Test
    public void queryUserByNameAndSexListTest() throws IOException {
        String resource="SqlMapConfig.xml";
        //读取配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //连接上数据库
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        //开启会话
        SqlSession sqlSession = factory.openSession();
        //模糊查询的条件
        User user = new User();
        user.setUsername("1");
        user.setSex(1);
        //第一个参数定位带ClothingMapper.xml的findClothingByName方法
        //第二个参数的是findClothingByName方法的参数
        List userList =  sqlSession.selectList("com.fh.mapper.UserMapper.queryUserByNameAndSexList",user);
        for (User user1:userList) {
            System.out.println(user1);
        }
        System.out.println(userList.size());
    }

删除数据

UserMapper.java

 //通过ID删除数据
    void deleteUserById(Integer userId);

userMapper.xml


    
        delete from t_user_idea where user_id = #{userId}
    

测试
UserMapperTest.java

	/**
     * 删除
     * @throws IOException
     */
    @Test
    public void deleteDeptTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
         SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();

        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        //这里调用的是selectOne方法,只能查询一条指定的数据,
        // 如果用它查询多条数据,会报异常(查询多条要用selectList)
        sqlSession.delete("com.fh.mapper.UserMapper.deleteUserById",8);

        sqlSession.commit();
        //关闭session会话
        sqlSession.close();
    }

修改

UserMapper.java

  //修改
    void updateUser(User user);

userMapper.xml


   

        update t_user_idea
        set user_name=#{username},user_sex=#{sex}
        where user_id = #{userId}

    

测试
UserMapperTest.java

	 /**
     * 修改
     * @throws IOException
     */
    @Test
    public void updateDeptTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();

        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        User user = new User();
        //必须写id,这样才可以修改
        user.setUserId(7);
        user.setUsername("张三");
        user.setSex(0);
        sqlSession.update("com.fh.mapper.UserMapper.updateUser",user);
        sqlSession.commit();
        //关闭session会话
        sqlSession.close();
    }

批量删除

UserMapper.java

  //批量删除
    int deleteUserByIds(List idList);

userMapper.xml


    
        delete from t_user_idea
        where user_id in
        
        
            #{id}
        
    

测试
UserMapperTest.java

	/**
     * 批量删除
     */

    @Test
    public void deleteUserByIdsTest() throws IOException {
        //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径)
        String resource="SqlMapConfig.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        //创建工厂(连接mysql数据库)
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建会话
        SqlSession sqlSession=factory.openSession();

        ArrayList idList = new ArrayList<>();
        idList.add(13);
        idList.add(14);
        idList.add(15);

        //第一个参数:所调用的sql语句:namespace+‘.’+SqlID
        //第二个参数:传入的参数
        //int row =  sqlSession.deleteUserByIds("com.fh.mapper.UserMapper.deleteUserById",idList);
        int row = sqlSession.delete("com.fh.mapper.UserMapper.deleteUserByIds",idList);
        sqlSession.commit();
        //关闭session会话
        sqlSession.close();
    }

你可能感兴趣的:(MyBatis做简单的增删改查,超级详细,保证一看就会)