MyBatis是什么?点击查看
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
在搭建好MyBatis的运行环境后,需要配置两个基础文件,一个是【全局配置文件】,另一个是【映射文件】。
全局配置文件的工作比较类似于JDBC中的工具类,用于连接数据库一系列操作。
映射文件的工作是用来编写动态SQL,用于接收参数,然后形成一个SQL语句发送到数据库执行的一系列操作。
全局配置文件
代码语言:javascript复制<?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>
<!--
用于配置mybatis的配置文件
resource:用于加载本地properties文件
property先执行properties后执行
-->
<properties resource="jdbc.properties"></properties>
<!--
配置环境信息:
事务:
数据库连接池:
default:指定默认使用的环境,值为environment的id
-->
<environments default="development">
<environment id="development">
<!-- 指定使用jdbc事务 -->
<transactionManager type="JDBC"/>
<!-- 指定数据源
type:是否使用数据库连接池
pooled是mybatis内置的数据库连接池
mybatis内置的连接池不好用,但是spring可以代替管理数据源可以使用 druid等第三方的数据库
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.pwd}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载类路径下的映射文件 resource是基于类路径下的-->
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
一般会在全局配置文件中通过properties文件方式加载连接数据库。至于properties文件中如何配置,大家可以通过百度,或者留意后续更新。
以上全局配置中的value值如``${jdbc.driver}``都是在加载properties文件中的键值对。
映射文件
代码语言:javascript复制<?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:命名空间,类似package,目的是为了包装sql id的唯一性
Java package为了保证类名的唯一性
-->
<mapper namespace="UserMapper">
<!--
用于执行select查询语句的
id:必须
resultType:定义查询结果的映射类型
如果返回单行记录,类型就是返回值的类型
如果返回多行记录,类型就是集合的泛型
#{}为占位符 可以接收简单类型,hashMap、实体类,如果输入参数为简单类型 #{任意值},如果输入参数为hashMap,#{key},如果输入参数为pojo类型#{属性名}
${}为拼接字符串 可以接受简单类型、hashMap、实体类
-->
<select id="selectCount" resultType="int">
select count(*) from t_user
</select>
<select id="selectAll" resultType="int" parameterType="java.lang.String">
select id from t_user where pwd=${value}
</select>
</mapper>
具体详解已经写在代码的详解中,配合代码查看更加直观。
需要注意的是,parameterType指的是输入参数,值是该数据类型的Java包装类全限定类名或是别名。别名可以在全局配置文件中声明,一些常见的Java数据类型MyBatis都有提供有别名,可自行百度学习。
使用
然后就是在测试类中使用配置好的MyBatis项目了
代码语言:javascript复制public class test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建构建者对象
SqlSessionFactoryBuilder factory=new SqlSessionFactoryBuilder();
//加载xml配置文件
InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
//构建工厂对象
SqlSessionFactory ssf=factory.build(is);
//使用工厂对象获取SQL session对象
SqlSession ss=ssf.openSession();
//selectOne方法只能返回一条数据
//参数为映射文件名(无后缀)和select标签的id
Integer sum=ss.selectOne("UserMapper.selectCount");
System.out.println(sum);
//selectList方法可以返回0或多条数据
//第一个参数同上,第二个参数为传的参数
List<Object> all=ss.selectList("UserMapper.selectAll","123");
System.out.println(all);
//将该SqlSession对象关闭,后续无法继续使用
ss.close();
}
}
xml中包括声明(声明版本信息及编码格式)、约束(mybatis使用的是dtd约束)、节点及属性。