Mybatis3.5的使用心得

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

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

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

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置数据库连接信息 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/数据库名"/>
        <property name="username" value="xxxx"/>
        <property name="password" value="xxxx"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

这个文件名字一般是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配置文件中,去注册这个注解

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置数据库连接信息 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/数据库名"/>
        <property name="username" value="root"/>
        <property name="password" value="xxxx"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
      <!-- 注册UserMapper映射接口-->
      <mapper class="com.yc.mapping.ResuserMapper"/>
  </mappers>
</configuration>

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<User>返回
		List<Resuser> 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针对连接有所更改,配置改为如下:

<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/xxx?serverTimezone=UTC&amp;useSSL=false"/>
    <property name="username" value="root"/>
    <property name="password" value="xxxx"/>
</dataSource>

 

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

see you

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值