mybatis入门教程(配置文件详解、增删改查、接口编程方式)

今天把mybatis基础学差不多了,总结一下。

从配置文件开始:

    mybatis一共有两种配置文件,一个叫总配置文件(下文的Config.xml),一个是映射的配置文件(user.xml),其中映射文件可以有多个。先把工程目录贴上

mybatis入门教程(配置文件详解、增删改查、接口编程方式)_第1张图片

下面是mybatis总配置文件代码:




	
		
	
	
	
		
		
			
				
			    
			    
			    
			
		
	
	
	
	
		  
	  
	

其中标签的作用就是把很长的类文件目录简化,上面就可以直接有User代替com.ljf.mybatis.User,后面在有需要这个User直接用就行,比如后面的返回值类型resultType=“User”,就是简化后的,很方便,中的都是数据库基本配置文件,不需要再多讲,根据自己的数据库进行配置,中的是映射文件,其中可以有多个,并列就行,并且切记,第一一定要完整的路径名,第二不能用“.”而是用“/”进行分隔。是不是很简单。


下面放上映射文件:






	
    
    
    	insert into user(username,password) values(#{username},#{password})
    
    
    
    	update user set password=#{password}
    	where username=#{username}
    
    
    
    	delete from user
    	where username=#{username};
    

我分别进行了更删改查的简单示范。下面详细进行说明

    mapper命名空间可以随便起名,只要不重复就行,我这里对应了接口的路径,作用一会再说,先说配置文件:

    增删该查操作分别对应    parameterType 是你要传入参数的类型,比如id等,也可以是list,map,User等。
    resultType   对应查询返回的类型,同上。
    SQL语句就不用说太多了,就一点#{},相当于SQL中的id=?的意思。


下面说一下面向接口的编程方式:
    首先建一个包,写一个接口,对应四个方法:

package com.ljf.mybatis.inter;

import com.ljf.mybatis.User;

public interface IUserOperation {
	
	public User selectUserByUsername(String username);
	
	public void insert(User user);
	
	public void update(User user);
	
	public void delete(String username);
}

有没有发现什么?我来总结以下相同点:

1.接口文件路径和User配置文件的mapper 的namespace相同;

2.接口中的方法名和User.xml中的方法名(也就是id)相同;

3.接口方法的返回值和参数类型与User.xml的parameterType和resultType相同;


这几点掌握你就会使用接口编程了,第一点很重要,其实三点错一个都不行的。

下面附上测试代码:

package com.ljf.test;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import com.ljf.mybatis.User;
import com.ljf.mybatis.inter.IUserOperation;

class test {
	
	@Test
	void testSELECT() {
		String resource = "/Config.xml";
		InputStream inputStream = this.getClass().getResourceAsStream(resource);
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = sessionFactory.openSession(); 
		
		try {
			IUserOperation userOperation= sqlSession.getMapper(IUserOperation.class);
			User user = userOperation.selectUserByUsername("James");
			System.out.println(user.getUsername());
			System.out.println(user.getPassword());
			
		}catch(Exception e) {
			e.printStackTrace();
		}
	
	}

	@Test
	void testINSERT() {
		String resource = "/Config.xml";           //定位核心配置文件
        InputStream inputStream = this.getClass().getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();  
        
        User user = new User();
        user.setUsername("wbd");
        user.setPassword("12778");
        
        IUserOperation userOperation= sqlSession.getMapper(IUserOperation.class);
        userOperation.insert(user);
        sqlSession.commit(); 
	}
	
	@Test
	void testUPDATE() {
		String resource = "/Config.xml";           //定位核心配置文件
        InputStream inputStream = this.getClass().getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();  
        
        IUserOperation userOperation= sqlSession.getMapper(IUserOperation.class);
        
        User user = userOperation.selectUserByUsername("ljf");
        user.setPassword("778899");
        userOperation.update(user);
        sqlSession.commit(); 
	}

	@Test
	void testDELETE() {
		String resource = "/Config.xml";           //定位核心配置文件
        InputStream inputStream = this.getClass().getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();  
        
        IUserOperation userOperation = sqlSession.getMapper(IUserOperation.class);
        
        userOperation.delete("ljf");
        sqlSession.commit(); 
	}
}

我分别对四个方法进行测试,全都能运行

IUserOperation userOperation = sqlSession.getMapper(IUserOperation.class);

这一步是面向接口编程特殊的一步,经过上面直接可以通过接口调用对应的方法执行sql语句了。

以上就是我的总结,希望能帮到你们。有问题可以一起讨论。

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