一:首先知道什么叫 Mybatis
(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"> <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" /> <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 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"> 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 ListgetObjects();//测试 数据库获取所有的 记录 方法; }
(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); Listlist = 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标签的使用!
....
select u_id,u_name,u_sex from users
由于实体中的私有属性和表中的列名不一致所以要使用 ResultMap 这个标签让他们之间产生映射,Demo中不能展现的很清楚大家可以在测试 按条件查询的时候,会发现resultMap 的用处!
五:项目部署完成 但总感觉这篇写的没有什么思路希望大家看不明白了谅解,大家学习即可就好啦,我们大家一起进步;
项目源码下载