MyBatis-传参数问题


/mybatisv2/src/main/resources/mapper/InterfaceMapper.xml






    

/mybatisv2/src/main/resources/sqlMapConfig.xml





    
    

    
        
    


    
    
        
    
    
    
        
        
            
            
            
            
                
                
                
                
                
                
                
                
            
        
    
    
    
        
        
    

UserMapperDao

package dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import pojo.User;

/**
 * 这个类用来完成用户表的业务
 * 
 * @author Administrator
 *
 */
public interface UserMapperDao {
    public List findByPage(@Param("name") String name,@Param("startIndex") int startIndex,@Param("pageSize") int pageSize);
}

对应测试类

public class InterfaceTest {
    SqlSessionFactory ssf=null;
    @Before
    public void init(){
        //获取会话工厂
        try {
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            ssf = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    
    @Test
    public void findByPage(){
        //获取sqlsession,执行SQL
        SqlSession session = ssf.openSession();
        //利用接口方法
        UserMapperDao dao = session.getMapper(UserMapperDao.class);
        List list = dao.findByPage("张三", 0, 3);
        //处理结果
        for (User user : list) {
            System.out.println(user);
        }
        //释放资源
        session.close();
    }
}   

如果这么写参数

public List findByPage(String name,int startIndex,int pageSize);

会有如下绑定异常


MyBatis-传参数问题_第1张图片

当然你还可以这样写

    

甚至可以这样写

    

但是上述两种方法可读性不好,推荐最上面的写法。

注意,如果用了if标签

    

也要用以下写法

    public User findOne(@Param("id")int id);
@Test
        public void findOne(){
            // 2.创建sqlsession对象,执行sql
            SqlSession session = ssf.openSession();
            UserMapperDao dao = session.getMapper(UserMapperDao.class);
            User user=dao.findOne(1);
            System.out.println(user);
            // 4.释放资源
            session.close();
        }

你可能感兴趣的:(MyBatis-传参数问题)