Mybatis3.5的使用心得

应要求,本次内容需要用到mybatis框架,抱着一法通,则万法通的心态,就先过去看了下官方文档,然后使用了一下,总结如下用法:

1、首先,要下载mybatis的jar包,这个官网上直接有,我就不贴地址了。

2、我使用的是mysql数据库,所以,还需要mysql的驱动包

3、两个包搞定后,需要一个mybatis的配置文件,这个配置文件极其重要:




  
    
      
      
      
        
        
        
        
      
    
  

这个文件名字一般是conf.xml,嗯,习惯重于编程,那么我们就按照习惯来,不改名字了。对了, 位置放在src下面

这个文件里面的东西,其实一看也就明白了,是帮我们连接数据库用的,就不多做解释了。

4、数据库建好表,不多累赘

5、建立与数据库表对应的实体类,注意,请一一对照

6、这个时候,重点来了,如何使用呢?官网给了我们两个方法:一个是xml配置文件,一个是注解,我们简单的使用,用注解的方式不知道要好到哪里去咯,于是我们使用注解的方法。

public interface ResuserMapper {	
	//使用@Select注解指明getAll方法要执行的SQL
	@Select("select * from resuser")
	public Resuser getAll();
}

其中,Resuser是我的实体类,数据库名字叫做resuser

7、到conf.xml配置文件中,去注册这个注解




  
    
      
      
      
        
        
        
        
      
    
  
  
  
      
      
  

8、到此,准备工作就做完了,那么现在,可以去写测试类了

public static void main(String[] args) {
		//mybatis的资源配置文件
		String resource = "conf.xml";
		//得到IO流
		InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
		//每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		//得到session
		SqlSession sqlSession=factory.openSession(true);		//true  自动提交
		
		//得到ResuserMapper接口的实现类对象,ResuserMapper接口的实现类对象由sqlSession.getMapper(ResuserMapper.class)动态构建出来
		ResuserMapper mapper = sqlSession.getMapper(ResuserMapper.class);
		//执行查询操作,将查询结果自动封装成List返回
		List lstUsers = mapper.getAll();
		//使用SqlSession执行完SQL之后需要关闭SqlSession
		sqlSession.close();
		System.out.println(lstUsers);
}

9、emmmmm,这个时候,可能会有一堆的错误,当然,欧洲程序猿请自觉走开,到这里就差不多了。

第一个错误:Unsupported major.minor version 52.0

原因是因为mybatis3.5最低支持jdk1.8,因此如果你是jdk1.7的,请换成jdk1.8以上

 

第二个错误:Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]

这个是因为你有参数注入,那么,这个时候,为了确定顺序,需要你带上@param注解

@Select("select * from resuser where username=#{username} and pwd=#{pwd}")
public Resuser login(@Param("username")String username,@Param("pwd")String pwd);

 

第三个错误:java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract

原因是因为你的mysql驱动包版本过低,请更新一下子~~

 

补充:第四个错误,连mysql8会出问题,因为和jdbc一样,mysql8针对连接有所更改,配置改为如下:



    
    
    
    

 

好啦,暂时到现在为止,就出现这些错误,等发现了,再说

see you

你可能感兴趣的:(java)