1、Mybatis概念
Mybatis是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,支持定制SQL。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录。它一种“半自动化”的ORM实现。 这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。
2、程序示例
A、环境搭建:
a、在官网下载mysql的jar包,导入到新建项目的lib文件夹。
b、新建全局配置文件mybatis.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><!--引入dtd文件(XML校验文件,有这个 文件之后,在xml文件中可以有自动补全功能)-->
<environments default="mybatis">
<environment id="mybatis">
<transactionManager type="JDBC"></transactionManager> <!-- 配置事务管理 ,type为JDBC即使用原生JDBC管理-->
<dataSource type="POOLED"> <!-- type为pooled表示数据库连接 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/new"/>
<property name="username" value="root"/>
<property name="password" value="1213"/>
</dataSource>
</environment>
</environments>
<!-- 告知映射方式 -->
<mappers>
<mapper resource="com/mapper/studentMapper.xml"/>
</mappers>
</configuration>
c、创建实体类,写出构造方法、get方法、set方法以及toString方法,数据库中建表,且表的列名最好和实体类中的属性一致。
d、新建一个mapper包,存放映射
<?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="com.mapper.studentMapper"> <!-- namespace相当于在指定的包新建了一个类 -->
<!-- 结果类型是实体类的全类名,每个元素的类型为map -->
<select id="selectAll" resultType="com.entity.student" parameterType="map">
select * from student where num = #{num} and name = #{name}
</select>
</mapper>
B、写测试类
public static void main(String[] args) throws Exception {
SqlSession sqlSession = null;
// 使用工厂模式和建造者模式
InputStream in = new FileInputStream("src/mybatis.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
sqlSession = ssf.openSession();
//查询时,根据多个条件查询,就使用map存放参数
Map map = new HashMap();
map.put("num", 1);
map.put("name", "张三");
List<student> list = sqlSession .selectList("com.mapper.studentMapper.selectAll",map);
for (student stu : list) {
System.out.println(stu);
}
}