MyBatis使用demo
一、项目结构
二、添加项目依赖
<dependencies>
<!-- MyBatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 单元测试junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- log4j日志包,方便看sql语句和日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
三、创建SqlMapConfig.xml全局配置文件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>
<!-- 将数据源的四要素信息写在jdbc.properties文件中通过properties标签的resource属性引用 -->
<properties resource="jdbc.properties"/>
<!-- 将实体类别名设置,package标签标示改路径下的所有实体类,在mapper.xml中resultType均可以使用类名的首字母小写的名字
否则只可以使用全限定类名-->
<typeAliases>
<package name="com.lzw.bean"/>
</typeAliases>
<!-- 环境配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- mappers映射器,可以找到mapper.xml配置文件 -->
<mappers>
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<package name="com.lzw.dao"/>
</mappers>
</configuration>
四、创建实体类Emp.java
package com.lzw.bean;
import java.util.Date;
/**
* @Auther: lzw
* @Date: 2021/2/9 - 02 - 09 - 12:46
* @Description: com.lzw.bean
* @version: 1.0
*/
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comm;
private Integer deptno;
@Override
public String toString() {
return "Emp{" +
"empno=" + empno +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", mgr=" + mgr +
", hiredate=" + hiredate +
", sal=" + sal +
", comm=" + comm +
", deptno=" + deptno +
'}';
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
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;
}
public Emp() {
}
public Emp(Integer empno, String ename, String job, Integer mgr, Date hiredate, Double sal, Double comm, Integer deptno) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.deptno = deptno;
}
}
五、写dao层接口EmpMapper.java
package com.lzw.dao;
import com.lzw.bean.Emp;
import java.util.List;
/**
* @Auther: lzw
* @Date: 2021/2/9 - 02 - 09 - 12:57
* @Description: com.lzw.dao
* @version: 1.0
*/
public interface EmpMapper {
public List<Emp> findAll();
}
六、创建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="com.lzw.dao.EmpMapper">
<select id="findAll" resultType="emp">
select * from emp
</select>
</mapper>
注意:namespace为接口的全路径类名,id为接口的接口名
七、创建测试类
import com.lzw.bean.Emp;
import com.lzw.dao.EmpMapper;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @Auther: lzw
* @Date: 2021/2/9 - 02 - 09 - 13:10
* @Description: PACKAGE_NAME
* @version: 1.0
*/
public class MyTest {
@Test
public void Test01() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建sqlsession工厂类
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
// 创建sqlsession传入true参数表示自动提交事务
SqlSession sqlSession = build.openSession(true);
// 将mapper接口的class文件传入sqlsession,获取对象,并执行相关sql
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> all = mapper.findAll();
all.stream().forEach(System.out::println);
// 关闭sqlsession
sqlSession.close();
}
}