1、环境准备:
1.2 添加所需要的jar包到项目lib目录下:
mybatis包:mybatis-3.2.3.jar
驱动包:mysql-connector-java-5.1.25-bin.jar
1.3 创建数据表
CREATE TABLE `users` (
`id` int(10) NOT NULL,
`username` varchar(30) DEFAULT NULL,
`mobile` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
)
2、使用mybatis操作数据库(查询):
2.1 在项目的目录下添加一个mybatis-config.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>
<!-- 配置环境,default指定使用某种环境 -->
<environments default="development">
<!-- 具体环境,必须两个参数,id是当前环境唯一表示 -->
<environment id="development">
<!-- 事务管理器 ;type="[JDBC|MANAGED]"),
这两个都是别名,在Configuration类中可以查看具体类!
但是Spring对事务的控制才是最终的管理方案!
当然也可以自定义事务管理器:
只需要和人家一样实现TransactionFactory接口,type指定为全类名。
-->
<transactionManager type="JDBC" />
<!-- 配置数据库信息 ,type可以是:[UNPOOLED|POOLED|JNDI]-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/yt_lx"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<!-- 可配置多个数据源 -->
<!-- <environment id="">
....
</environment> -->
</environments>
</configuration>
2.2 定义实体类
在包com.zlt.model下创建一个类
package com.zlt.model;
/**
* @info user实体类-对应数据表
* @author admin_yt
* @date 18.1.3
*/
public class User {
private int id;
private String username;
private String mobile;
//set,get,toString方法
}
2.3 定义操作users表的sql映射文件userMapper.xml,创建一个包(com.zlt.mapping)存放sql映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 为这个mapper指定一个唯一的namespace,
namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
-->
<mapper namespace="com.zlt.mapping.userMapper">
<!-- id属性值必须是唯一的,不能够重复
使用parameterType属性指明查询时使用的参数类型,
resultType属性指明查询返回的结果集类型
-->
<!-- 根据ID得到一个user对象 -->
<select id="getUser" parameterType="java.lang.Integer"
resultType="com.zlt.model.User" >
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
另外在mybatis-config.xml配置文件添加如下配置,用来注册userMapper.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>
<!-- 配置环境,default指定使用某种环境 -->
<environments default="development">
<!-- 具体环境,必须两个参数,id是当前环境唯一表示 -->
<environment id="development">
<!-- 事务管理器 ;type="[JDBC|MANAGED]"),
这两个都是别名,在Configuration类中可以查看具体类!
但是Spring对事务的控制才是最终的管理方案!
当然也可以自定义事务管理器:
只需要和人家一样实现TransactionFactory接口,type指定为全类名。
-->
<transactionManager type="JDBC" />
<!-- 配置数据库信息 ,type可以是:[UNPOOLED|POOLED|JNDI]-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/yt_lx"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<!-- 可配置多个数据源 -->
<!-- <environment id="">
....
</environment> -->
</environments>
<!-- 映射mapper文件 -->
<mappers>
<mapper resource="com/zlt/mapping/userMapper.xml" />
</mappers>
</configuration>
3、编写测试类:
package com.zlt.test;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.zlt.model.User;
public class Test {
public static void main(String[] args) {
String res = "mybatis-config.xml";
SqlSessionFactory sqlSessionFactory = null;
SqlSession sqlSession = null;
Reader reader = null;
try {
//使用类加载器加载mybatis的配置文件,关联的映射文件
reader = Resources.getResourceAsReader(res);
// 1.创建会话工场,传入mybatis的配置文件信息
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 2.通过工厂得到sqlsession
sqlSession = sqlSessionFactory.openSession();
// 3.通过sqlSession操作数据库
// 第一个参数:映射文件中的statement的Id,等于namespace + "." + statement的id;
// 第二个参数:指定和映射文件中所匹配的parameterType类型的参数;
// sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象;
// selectOne:查询一条结果
User user = sqlSession.selectOne("com.zlt.mapping.userMapper.getUser", 1);
System.out.println(user.toString());
} catch (IOException e) {
e.printStackTrace();
}finally {
if( sqlSession != null) {
sqlSession.close();
}
if(reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
测试结果