环境搭建
导入 jar(导入相关的所有包,最重要的是mybatis包)
mybatis-3.2.7.jar,其余相关包看自己需求
在 src 下新建全局配置文件(编写 JDBC 四个变量)
- 没有名称和地址要求
- 在全局配置文件中引入 DTD 或 schema
- 全局配置文件内容
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">
<!-- TDT:xml的语法检查器,限制写什么 -->
<configuration>
<!-- default 引用 environment 的 id,当前所使用的环境 -->
<environments default="default">
<!-- 声明可以使用的环境 -->
<environment id="default">
<!-- 使用原生 JDBC 事务 -->
<transactionManager type="JDBC">
</transactionManager>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/sum"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers> <mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/>
</mappers>
</configuration>
新建以 mapper 结尾的包
在包下新建:实体类名+Mapper.xml
- 文件作用:编写需要执行的 SQL 命令
- 把 xml 文件理解成实现类(底层把xml文件通过反射和xml解析转换成实现类)
- 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">
<!-- namesapce:理解成实现类的全路径(包名+类名) /不规范的随便起名也可以通过-->
<mapper namespace="com.youdian.FlowerMapper" >
<!--
id:方法名
parameterType:定义参数类型
resultType:返回值类型
如果方法返回值是 list,在 resultType 中写 List 的泛型, 因为 mybatis 对 jdbc 封装,一行一行读取数据
-->
<select id="selAll" resultType="com.youdian.pojo.Flower">
select * from flower
</select>
</mapper>
注:所有框架,只要在xml文件中,是自己写的类,那么是全路径——读取xml用反射机制
测试结果
只有在单独使用 mybatis 时使用,最后 ssm 整合时下面代码不需要编写
工厂设计模式:(命名规则)
专门生成a产品的工厂,因为它生成a:所以叫做——a+Factory
session.selectList——包名类名加方法名
package com.youdian.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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.youdian.pojo.Flower;
public class Test {
public static void main(String[] args) throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//使用工厂设计模式_构建者设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//生产SqlSession
SqlSession session=factory.openSession();
//SQL查询
List<Flower> list = session.selectList("com.youdian.mapper.FlowerMapper.selAll");
for (Flower flower : list) {
System.out.println(flower.toString());
}
//长连接,用完后需要释放资源
session.close();
}
}
测试结果如下:
Flower [id=1, name=村花, price=3.0, production=村头屋]
Flower [id=2, name=喇叭花, price=2.3, production=喇叭村]
Flower [id=3, name=秀花, price=3.0, production=天秀村]
Flower [id=4, name=测试, price=1.0, production=测试员]
Flower [id=5, name=测试2, price=1.0, production=测试员2]