Mybatis的基本CRUD操作流程
1.导包
导入mybatis包和mysql包以及junit测试包
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2.创建实体类
package com.ls.bean;
public class Emp {
//只列出了表中四个元素
private Integer empno;
private String ename;
private String job;
private Integer mgr;
public Emp() {
}
public Emp(Integer empno, String ename) {
this.empno = empno;
this.ename = ename;
}
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;
}
@Override
public String toString() {
return "Emp{" +
"empno=" + empno +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", mgr=" + mgr +
'}';
}
}
3.创建mybatis-config配置文件
<?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>
<!-- 外部数据源,必须放在这,在environments中会报错-->
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<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 resource="EmpDao.xml"></mapper>
</mappers>
<!--是来将mapper映射文件引入到配置文件中,方便程序启动的时候进行加载
每次在进行填写的时候需要注意,写完xml映射之后一定要添加到mybatis-config文件中
resource:从项目的类路径下加载对应的映射文件
url:从本地磁盘目录或者网络中引入映射文件
class:可以直接引入类的完全限定名,可以使用注解的方式进行使用,
如果想要class的方式引入配置文件,可以将xml文件添加到具体的类的同级目录下
1、如果是maven的项目的话,需要添加如下配置,因为maven默认只会编译java文件,需要把xml文件也添加到指定目录中
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
2、在resource资源目录下,创建跟dao层一样的同级目录即可,将配置文件放到指定的目录-->
</configuration>
4.配置外部数据源
url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC
driver=com.mysql.jdbc.Driver
username=root
password=123
5.创建实体与映射关系文件
<?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.ls.dao.EmpDao">
<insert id="save">
insert into emp(empno,ename) values (#{empno},#{ename})
</insert>
<insert id="update">
update emp set ename=#{ename} where empno=#{empno}
</insert>
<delete id="delete">
delete from emp where empno = #{empno}
</delete>
<select id="selectEmpByEmpno" resultType="com.ls.bean.Emp">
select * from emp where empno = #{empno}
</select>
</mapper>
6.编写Dao接口应用
package com.ls.dao;
import com.ls.bean.Emp;
public interface EmpDao {
//添加
public Integer save(Emp emp);
//更新
public Integer update(Emp emp);
//删除
public Integer delete(Emp emp);
//按照empno进行查询
public Emp selectEmpByEmpno(Integer empno);
}
7.测试
import com.ls.bean.Emp;
import com.ls.dao.EmpDao;
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.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class MyTest {
SqlSessionFactory sqlSessionFactory = null;
SqlSession sqlSession = null;
//编写在任意使用@Test注解标注的public void方法执行之前执行init方法
@Before
public void init(){
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
//使用工具类Resources从配置文件resource中构件SqlSessionFactory实例
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession实例
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void test01() throws IOException {
//获取对应的映射接口对象
EmpDao mapper = sqlSession.getMapper(EmpDao.class);
//执行sql语句
Emp emp = mapper.selectEmpByEmpno(7369);
System.out.println(emp);
//关闭会话
sqlSession.close();
}
@Test
public void test02(){
EmpDao mapper = sqlSession.getMapper(EmpDao.class);
Emp emp = new Emp();
emp.setEmpno(1111);
emp.setEname("zhangsan");
Integer i = mapper.save(emp);
System.out.println(i);
//提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void test03(){
EmpDao mapper = sqlSession.getMapper(EmpDao.class);
Emp emp = new Emp();
emp.setEname("lisi");
emp.setEmpno(1111);
Integer i = mapper.update(emp);
System.out.println(i);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test04(){
EmpDao mapper = sqlSession.getMapper(EmpDao.class);
Emp emp = new Emp();
emp.setEmpno(1111);
Integer i = mapper.delete(emp);
System.out.println(i);
sqlSession.commit();
sqlSession.close();
}
}