版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_44001965/article/details/87921324
下面是mybatis框架模拟增删改查的代码
一,在添加maven配置后的pom.xml文件中添加以下配置:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--oracle不允许maven下载驱动包 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4.0</version>
</dependency>
二,写一个DeptDao的接口
package com.aaa.mb.dao;
import com.aaa.mb.entity.Dept;
import java.util.List;
public interface DeptDao {
/**
* 部门列表查询
* @return
*/
List<Dept> getList();
/**
* 部门添加
* @param dept
* @return
*/
int add(Dept dept);
/**
* 根据id查询对象
* @param deptNo
* @return
*/
Dept getById(int deptNo);
/**
* 部门更新
* @param dept
* @return
*/
int update(Dept dept);
/**
* 部门删除
* @param deptNo
* @return
*/
int delete(int deptNo);
}
三,写一个dept的实体类
package com.aaa.mb.entity;
/**
* className:Dept
* discription:
* author:zz
* createTime:2018-11-13 09:44
*/
public class Dept {
private Integer deptNo;
private String dname;
private String loc;
public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
四,在resources文件夹下的mapper文件中新建配置文件DeptDaoMapper
<?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.aaa.mb.dao.DeptDao">
<sql id="selId">
select deptno as deptNo,dname,loc from dept
</sql>
<!--部门列表查询 resultType返回类型 -->
<select id="getList" resultType="com.aaa.mb.entity.Dept">
<include refid="selId"></include>
</select>
<!--部门添加-->
<insert id="add" parameterType="com.aaa.mb.entity.Dept">
insert into dept values(seq_dept_id.nextval,#{dname},#{loc})
</insert>
<!--根据id查询部门-->
<select id="getById" parameterType="java.lang.Integer" resultType="com.aaa.mb.entity.Dept">
<include refid="selId"></include> where deptno=#{deptno}
</select>
<!--部门更新-->
<update id="update" parameterType="com.aaa.mb.entity.Dept">
update dept set dname=#{dname},loc=#{loc} where deptno=#{deptNo}
</update>
<!--部门删除-->
<delete id="delete">
delete from dept where deptno=#{deptNo}
</delete>
</mapper>
五,在resources文件夹下新建一个和mapper文件位置并列的配置文件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>
<!--常量配置-->
<settings>
<!--控制台输出-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。-->
<setting name="jdbcTypeForNull" value="NULL"></setting>
</settings>
<!--类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。-->
<typeAliases>
<package name="com.aaa.mb.entity"/>
</typeAliases>
<!--环境配置,可以配置多个环境链接不同的数据源-->
<environments default="development">
<environment id="development">
<!--事务管理器 JDBC 自定处理事务 MANAGERD 事务交给容器管理-->
<transactionManager type="JDBC"/>
<!--数据源配置,链接数据库的4要素 POOLED 使用链接池-->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="scott"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/DeptDaoMapper.xml"/>
<mapper resource="mapper/EmpDaoMapper.xml"/>
<mapper resource="mapper/GradeDaoMapper.xml"/>
<mapper resource="mapper/RoleDaoMapper.xml"/>
</mappers>
</configuration>
六,在util包里新建一个SqlSessionFactoryUtil工具类
package com.aaa.mb.util;
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 java.io.IOException;
import java.io.InputStream;
/**
* className:SqlSessionFactoryUtil
* discription:该工具类创建SqlSessionFactory(官网建议单例模式)并生成SqlSession
* author:zz
* createTime:2018-11-13 09:13
*/
public class SqlSessionFactoryUtil {
//私有构造 防止在其他类实例化对象
private SqlSessionFactoryUtil(){}
//私有的 静态的属性
private static SqlSessionFactory sqlSessionFactory;
//使用静态块根据配置文件创建SqlSessionFactory 没有名字保证在其他地方不能调用,静态的,伴随类只产生一次
static {
//使用mybatis提供给我们的类Resources加载主配置文件,生成字节流
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis_config.xml");
//使用字节流构建SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//提供一个对象开放方法,生成SqlSession
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
七,新建一个测试类DeptTest类
package com.aaa.mb.test;
import com.aaa.mb.dao.DeptDao;
import com.aaa.mb.entity.Dept;
import com.aaa.mb.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
/**
* className:DeptTest
* discription:
* author:zz
* createTime:2018-11-13 11:06
*/
public class DeptTest {
@Test
public void testGetList(){
//使用工具类获取sqlSession
SqlSession sqlSession = SqlSessionFactoryUtil.getSession();
//使用sqlSession提供的方法,获取DeptDao
DeptDao deptDao = sqlSession.getMapper(DeptDao.class);
//循环遍历
List<Dept> deptList = deptDao.getList();
if(deptList!=null&&deptList.size()>0){
for (Dept dept : deptList) {
System.out.println("部门名称:"+dept.getDname());
}
}
}
@Test
public void testAdd(){
SqlSession sqlSession = null;
try {
//使用工具类获取sqlSession
sqlSession = SqlSessionFactoryUtil.getSession();
//使用sqlSession提供的方法,获取DeptDao
DeptDao deptDao = sqlSession.getMapper(DeptDao.class);
Dept dept = new Dept();
dept.setDname("马太阳");
dept.setLoc("郑州");
int i = deptDao.add(dept);
if(i>0){
System.out.println("添加成功");
sqlSession.commit();
}else{
System.out.println("添加失败");
sqlSession.rollback();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(sqlSession!=null){
sqlSession.close();
}
}
}
@Test
public void testUpdate(){
SqlSession sqlSession = null;
try {
//使用工具类获取sqlSession
sqlSession = SqlSessionFactoryUtil.getSession();
//使用sqlSession提供的方法,获取DeptDao
DeptDao deptDao = sqlSession.getMapper(DeptDao.class);
//更新前先查询对象
Dept dept=deptDao.getById(41);
dept.setDname("哈哈部");
dept.setLoc("哈哈楼");
int i=deptDao.update(dept);
if(i>0){
System.out.println("更新成功");
sqlSession.commit();
}else{
System.out.println("更新失败");
sqlSession.rollback();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(sqlSession!=null){
sqlSession.close();
}
}
}
@Test
public void delete(){
SqlSession sqlSession = null;
try {
//使用工具类获取sqlSession
sqlSession = SqlSessionFactoryUtil.getSession();
//使用sqlSession提供的方法,获取DeptDao
DeptDao deptDao = sqlSession.getMapper(DeptDao.class);
int i=deptDao.delete(41);
if(i>0){
System.out.println("删除成功");
sqlSession.commit();
}else{
System.out.println("删除失败");
sqlSession.rollback();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(sqlSession!=null){
sqlSession.close();
}
}
}
}
然后运行。