Mybatis框架学习总结--1如何搭建
程序员文章站
2022-07-12 22:30:38
...
第一次学习使用Mybatis框架进行开发,希望将自己的学习心得记录下来,同大家分享。
使用Mybatis做开发的流程:
1. 下载Mybatis.jar包
2. 部署jat包
3. 编写Mybatis配置文件
4. 创建实体类和数据库接口
5. 创建SQL映射文件
6. 创建数据库接口的实现类
7. 编写测试类进行测试
接下来通过实际的简单项目操作进行展示。
最后完成的小项目的目录夹如下图:
第一步,下载Mybatis的jar包。我上传在我的服务器上,地址是:点击下载
第二步,新建eclipse项目,下载完的jar导入到项目中的lib文件夹中,右击jar包–>build path–>add to build path
第三步,编写Mybatis配置文件,即mybatis-config.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>
<!--简化代码,使用Emp代替com.entity.Emp类,在EmpDaoMapper的映射文件中,代码将快捷干净很多 -->
<typeAliases>
<typeAlias alias="Emp" type="com.entity.Emp" />
</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/emp?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 注册EmpDaoMapper.xml文件,EmpDaoMapper.xml位于com.dao这个包下,所以resource写成com/dao/EmpDaoMapper.xml-->
<mappers>
<mapper resource="com/dao/EmpDaoMapper.xml" />
</mappers>
</configuration>
第四步,创建实体类和数据库接口
1.数据库创建新的数据库,创建表emp,设置相关的字段并插入值
CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno INT
) ;
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
2.创建与数据表emp对应的实体类
package com.entity;
import java.util.Date;
public class Emp {
private Integer empno;
private String empName;
private Date hireDate;
private String job;
private Double salary;
private Integer mgr;
private Double comm;
private Integer deptNo;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Double getComm() {
return comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
}
3.创建数据库接口
package com.dao;
import java.util.List;
import com.entity.Emp;
public interface IEmpDao {
//创建全选数据库的数据,返回值类型是以List储存的Emp对象的集合
public List<Emp> selectAll();
}
第五步,创建SQL映射文件
<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 -->
<mapper namespace="com.dao.IEmpDao">
<!-- 优化代码映射管理,一次设置,下面可优化重复使用 -->
<resultMap id="empResultMap" type="com.entity.Emp">
<id property="empno" column="empno" />
<result property="empName" column="ename" />
<result property="hireDate" column="hiredate" />
<result property="job" column="job" />
<result property="salary" column="sal" />
<!-- 别名储存数据,数据库取出的数据为column栏目命名,根据部分在实体类中的命名进行对应 -->
<result property="comm" column="comm" />
<result property="mgr" column="mgr" />
<result property="deptNo" column="deptno" />
</resultMap>
<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为selectAll,id属性值必须是唯一的,不能够重复;使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型, resultType="empResultMap"就表示将查询结果封装成一个emp类的对象返回emp类就是emp表所对应的实体类 -->
<select id="selectAll" resultType="Emp" resultMap="empResultMap">
SELECT * FROM
EMP
</select>
</mapper>
第六步,创建数据库接口的实现类
package impl;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
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.dao.IEmpDao;
import com.entity.Emp;
public class EmpDaoImpl implements IEmpDao {
//继承,实现具体操作
@Override
public List<Emp> selectAll() {
//加载配置文件,创建session仓库,可以在熟练掌握之后进行代码的封装,优化代码,实现重用
String resource = "mybatis-config.xml";
Reader reader = null;
SqlSessionFactory factory = null;
SqlSession session = null;
List<Emp> list = new ArrayList<Emp>();
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(reader);
session = factory.openSession();
//执行操作,对应映射文件具体的id--selectAll
//session.后的方法有selectOne,insert等,对应不同的数据操作,如果是对数据原本数据有影响的操作,需要之后加上session.commit();
list = session.selectList("com.dao.IEmpDao.selectAll");
} catch (IOException e1) {
e1.printStackTrace();
} finally {
session.close();
}
return list;
}
}
第七布,测试显示类
package test;
import java.util.Date;
import java.util.List;
import com.dao.IEmpDao;
import com.entity.Emp;
import impl.EmpDaoImpl;
public class testMybatis {
public static void main(String[] args) {
IEmpDao empDao = new EmpDaoImpl();
List<Emp> list = empDao.selectAll();
System.out.println("全部的员工信息:");
for (Emp em : list) {
System.out.println("员工编号" + em.getEmpno() + " 员工姓名:" + em.getEmpName() + " 职位:" + em.getJob() + "部门:"+ em.getDeptNo());
}
System.out.println("------------------------------------");
}
}
展示台结果:
楼主联系QQ:841400592。欢迎各位志同道合的朋友一起来讨论学习,如果觉得还行也欢迎转载。