首先写MYBATIS之前,一定要搞清楚他具体的步骤是什么 每一步的原因
搭建环境 (使用maven项目创建 导入mysql的jar包等等 一切的环境都配置好了之后)
<?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, 就是Connection.commit()/rollback()
-->
<transactionManager type="JDBC" />
<!-- 数据源, 访问的数据库参数
type - 管理方式, 管理Connection的方式,
POOLED , 代表池化管理. 就是连接池.
-->
<dataSource type="POOLED">
<!-- 配置具体参数 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 每一个MAPPER.xml都需要在核心配置文件中进行配置-->
<mappers>
<mapper resource="com/gong/dao/userMapper.xml"/>
</mappers>
</configuration>
根据自己的用户名密码以及链接的数据库的名称将其中的相应的改过来;
并且该配置文件一定要放到resource的资源文件目录下,不然很容易找不到文件路径。
第二步:写mybatis的工具类(封装的思想,将产生SQL session等这些相同的步骤都封装起来)
package com.gong.dao;
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 java.io.IOException;
import java.io.InputStream;
public class mybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static{
String Resource="mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(Resource); //获取配置文件流
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过该文件流创建SQL sessionfactory 以便之后获得SQL session对象可以操作数据库
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
//example
//getSqlSession().insert(); 可以执行增删改查的等各种相关操作
}// 调用这个函数就可以返回一个可以执行sql的语句
}
实现之后,因为像使用jdbc一样 对数据库进行操作,这个时候就需要一个DAO层,首先写一个接口(不实现内部方法)
package com.gong.dao;
import proj.user;
import java.util.List;
public interface userdao {
List<user> getuserList();
}
第四步:最关键的步骤
通过xml文件的配置来代替对于DAO这个接口的实现:具体使用xml
<?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">
<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.gong.dao.userdao">
<!--select查询语句-->
<select id="getuserList" resultType="proj.user">
select * from mybatis.user
</select>
</mapper>
<!--代替了implenment这个接口类-->
其中一定要注意你的作用于范围是这个接口的方法的内层,并且在执行的时候有返回值,其返回的类型对应你创建的数据库的类型,通过相对地址就可以的得到其相应的类型。
第六步:最后的测试:
package com.gong.dao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import proj.user;
import java.util.List;
public class userdaotest {
@Test
public void test()
{
SqlSession sqlSession = mybatisUtil.getSqlSession(); //返回执行sql的对象
userdao userdao = sqlSession.getMapper(userdao.class);//拿到接口
List<user> users = userdao.getuserList();
for (user user : users) {
System.out.println(user);
}
sqlSession.close();
}
}
```创建一个test类 对他进行调试
注意点:因为MAVEN的规定配置很重要,所以建立的文件地址一定要很清楚文件都需要放在指定的位置,否则再取的时候很容易取不到值。
这是大概的建立的位置可以参考!