MyBatis:是一个轻量级的数据库管理框架,更多的使用配置文件来设置连接数据库的属性,达到解耦合的效果。
在项目路径下创建一个conf文件(Source Folder类型)用来存放配置文件,conf文件(与src文件同级)下的文件最终会和src文件下的文件合并到bin文件,即与src同级文件的路径也作为类路径。
如:conf文件下有1.txt 文件的路径为 :1.txt
bin文件下也称作类路径下。
总结:1、全局配置文件注册sql映射文件
2、sql映射文件绑定接口,接口方法,以及Bean类。
3、测试获得接口实例化对象,调用方法获得数据库映射到Bean类的实例化对象。
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>
<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"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<mapper resource="EmployeeMapper.xml"/>
</mappers>
</configuration>
每个sql映射文件都需要在全局配置文件下的mappers标签下通过添加<mapper>进行注册:
<mapper resource="sql映射文件名.xml"/>
2、在conf目录下继续新建一个sql映射文件EmployeeMapper.xml来存放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">
<!--
sql映射文件:用来存放sql语句,需要在全局配置文件中注册
namespace:名称空间;绑定的接口的全类名
id:唯一标识符,用来绑定接口的方法名
resultType:返回值类型
#{id}:相当于占位符,#{Bean对象的属性名},由select标签的id值即接口的方法传入参数来确定占位符
实际值,与该方法的参数名无关,参数名不需要与bean属性名对应
public Employee getEmpById(Integer id);
-->
<mapper namespace="mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="mybatis.bean.Employee">
select id,last_name lastName,email,gender from tb1_employee where id = #{id}
</select>
</mapper>
同样的sql配置文件也需要一个<mapper>来设置属性,如从数据库中映射到对象的类(resultType)、获取占位id实际值使用的方法(实际就是该方法传入的参数就是占位符实际值)、以及sql映射文件对应的接口(namespace)。
3、当然我们还需要设置该接口以及对应方法:
package mybatis.dao;
import mybatis.bean.Employee;
public interface EmployeeMapper {
public Employee getEmpById(Integer id);
}
4、最后执行sql语句代码:
//获取工厂对象方法
private static SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
public static void main(String[] args) throws Exception {
//获取工厂对象
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
//获取session,session表示一个会话即对数据库的一次操作
SqlSession session = sqlSessionFactory.openSession();
try {
// session对象的getMapper方法传入接口class获得代理对象(接口的实例化对象)
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
//通过设置好的方法传入占位符值得到Bean对象
Employee employee = mapper.getEmpById(1);
} finally {
//会话使用完要进行关闭
session.close();
}
}