引用官方文档的一句话:
什么是MyBatis?
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
下面是入门示例:
使用MyBatis,首先需要做的就是获取到mybatis的jar包,下载地址:https://github.com/mybatis/mybatis-3/releases
当然,你也可以在maven pom.xml中直接引入
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
当然还得引入数据库连接驱动的jar包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>x.x.x</version>
</dependency>
接下来就是创建数据库User表,编写实体类
package com.ifox.myBatis.entities;
public class User {
private int id;
private String name;
private String sex;
private String email;
/**
* 下面省略gerter and setter and toString
*/
...
}
现在需要做的就是建立myBatis的核心配置文件,SqlSessionForctory就是通过此配置文件取得的;
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/myBatis?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/ifox/myBatis/entities/UserMapper.xml"/> //对应mapper映射文件路径
</mappers>
</configuration>
接下来就是创建User的sql映射文件 UserMapper.xml
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* @author Shengjun Gong
* @Description: TODO
* @date 2017年7月11日 上午9:31:45
* @version V1.0
*/
public class Test {
/**
* @throws IOException
* @Description: mybatis测试
*
*/
public static void main(String[] args) throws IOException {
String path = "conf.xml";
Reader rd = Resources.getResourceAsReader(path);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(rd);
// InputStream resource = Test.class.getClassLoader().getResourceAsStream("conf.xml");
// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
SqlSession session = factory.openSession(); //获取sqlSession;
String statement = "com.ifox.myBatis.entities.UserMapper.getUser";
User user = session.selectOne(statement, 1);
System.out.println(user); //输入查询结果
}
}
以上是myBatis入门示例的完成代码。
下面总结一下其中遇到的问题:
不到conf.xml文件,找不到com.ifox.myBatis.entities.UserMapper.xml
原因:该文件的路径位置错误,该文件应该放于相对src/mian/java的路径下,完全限定名书写错误,注意大小写
.
纠正以上错误是,仍然报错,错误提示为:
Exception in thread “main”:org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.sql.SQLException: The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
查阅相关资料,发现在连接数据库的url后面添加参数?serverTimezone=UTC即能正常运行,输出结果为:
Student [id=1, name=tom, sex=1, email=tom@163.com]
顺便再配置conf.xml 和 UserMapper.xml文件时再eclipse中时没有提示添加提示方法如下:
点击window -> Preferences -> xml ->XML Catalog中添加dtd文件即可 public ID中填写如下代码中 public后引号中内容即可。
<?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">