一:首先知道什么叫 Mybatis
![](https://images2015.cnblogs.com/blog/1094228/201706/1094228-20170601201152196-909380202.jpg)
![](https://images2015.cnblogs.com/blog/1094228/201706/1094228-20170601201408664-1381215977.png)
(1)创建项目-----接着导入相关的jar 包;
(稍后提供相应的源码)
(2) 接着 创建好 相应的数据库表 (Demo的数据库名:hytc ;表名称:users)
(3) 创建相应的 entity 实体类 Users (Demo中 类的私有属性和表重的元素----有些不同 这里大家先留意一下)
package ankermaker.top.entity; import java.util.Date; /** * * @author Ankermaker * users 表对应的实体类 */ public class Users { protected Integer id; protected String name; protected String sex; protected String edu; protected Date birth; protected String remark; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getEdu() { return edu; } public void setEdu(String edu) { this.edu = edu; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } @Override public String toString() { return "Users [id=" + id + ", name=" + name + ", sex=" + sex + ", edu=" + edu + ", birth=" + birth + ", remark=" + remark + "]"; } }
(4)接下来创建 Mybatis 的 核心配置xml文件 (命名 没有要求 ),存放与src目录下;[Demo中 以 conf.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> <!-- 为 实体映射 文件 创建别名映射 --> <typeAliases> <package name="ankermaker.top.entity"/><!--这个 包下面的 所有 实体类 别名 自动 创建 --> </typeAliases> <environments default="development"><!-- 环境池 配置 :default 属性值 默认环境名称 --> <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/hytc" /><!-- 老陈写法:jdbc:mysql:///hytc --> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <mapper resource="ankermaker/top/mappers/Usersmapper.xml"/> </mappers> </configuration>
(5)接下来创建 mapper 映射操作xml文件 (这个文件的作用:简单的说:所有对表的增删改查操作 的sql 语句和 该文件映射的借口类中的方法 在给文件中注册体现;执行查询的方法有多种,通过 映射文件创建映射借口,用户调用Mapper接口中的方法,执行相应的sql语句 并返回查询结果!大家在测试之后 可以仔细的感受该文件的作用!!!)
Demo中的Mapper 映射操作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"> <mapper namespace="ankermaker.top.mappers.Usersmapper"><!-- 映射接口类的 路径!!! --> <!-- 实体类 中 与表名字 不同 使用 resultMap 来创建 别名映射!--> <resultMap type="users" id="userMap"> <id column="u_id" property="id" jdbcType="INTEGER"/> <result column="u_name" property="name"/> <result column="u_sex" property="sex"/> </resultMap> <!-- 查询 所有 数据 测试! --> <select id="getObjects" resultMap="userMap"> <!-- 直接引用 上面的 resultMap --> select u_id,u_name,u_sex from users </select> </mapper>
(6)接下来创建 mapper映射文件的 映射接口类:接口类名和映射操作xml文件 名一样!!都为:Usersmapper
package ankermaker.top.mappers; import java.util.List; import ankermaker.top.entity.Users; public interface Usersmapper { /** * 查询所有用户的信息 * * @return */ public List<Users> getObjects();//测试 数据库获取所有的 记录 方法; }
(7)接了下就是测试 数据库操作的时候了 创建 测试类,
package ankermaker.top.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 org.junit.After; import org.junit.Before; import org.junit.Test; import ankermaker.top.entity.Users; import ankermaker.top.mappers.Usersmapper; public class AppText { private SqlSessionFactory sessionFactory; private static SqlSession session; private Usersmapper mapper; @Before public void setup() { String resource = "conf.xml"; InputStream is = null; try { is = Resources.getResourceAsStream(resource); sessionFactory = new SqlSessionFactoryBuilder().build(is); session = sessionFactory.openSession(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void getObjects() { // 分页查询 // 获取 映射 借口 对象 ; mapper = session.getMapper(Usersmapper.class); List<Users> list = mapper.getObjects(); for (Users u : list) { System.out.println(u + "测试成功"); } } @After public void result() { if (sessionFactory != null) { sessionFactory = null; } if (session != null) { session = null; } } }
使用 junit test 测试 getObjects方法;
四:问题分析:论ResultMap 的作用!
大家看Usersmapper.xml 中的resultMap标签的使用!
<resultMap id="userMap" type="users">
<id jdbcType="INTEGER" property="id" column="u_id"/>
<result property="name" column="u_name"/>
<result property="sex" column="u_sex"/>
</resultMap>
....
select u_id,u_name,u_sex from users
由于实体中的私有属性和表中的列名不一致所以要使用 ResultMap 这个标签让他们之间产生映射,Demo中不能展现的很清楚大家可以在测试 按条件查询的时候,会发现resultMap 的用处!
五:项目部署完成 但总感觉这篇写的没有什么思路希望大家看不明白了谅解,大家学习即可就好啦,我们大家一起进步;