一、创建项目和数据库
项目名称:mybatis092901
数据库名称:mybatis0929
表名称:dept
CREATE TABLE `dept` (
`deptNo` int(11) NOT NULL,
`deptName` varchar(30) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
PRIMARY KEY (`deptNo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表名称:emp
CREATE TABLE `emp` (
`empno` int(11) NOT NULL,
`ename` varchar(30) DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`job` varchar(30) DEFAULT NULL,
`sal` double DEFAULT NULL,
`mgr` varchar(30) DEFAULT NULL,
`comm` varchar(30) DEFAULT NULL,
`deptno` int(11) DEFAULT NULL,
PRIMARY KEY (`empno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、添加jar包
1.在项目上创建lib目录
/lib
2.在lib目录下添加jar
junit-4.10.jar
mybatis-3.2.2.jar
mysql-connector-java-5.1.10-bin.jar
三、添加配置文件
1.在项目上创建conf目录
/conf
2.在conf目录下添加配置文件
配置文件名称: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>
<typeAliases>
<typeAlias alias="Emp" type="cn.jbit.mybatis092901.domain.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/mybatis0929"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
四、创建实体类
1.在src目录下创建包
包名:cn.jbit.mybatis092901.domain
2.在包下创建实体类
类名:Dept.java
内容:
public class Dept implements Serializable {
private Integer deptNo;//部门编号
private String deptName;//部门名称
private String location;//部门地址
//省略get and set
}
类名:Emp.java
内容:
public class Emp implements Serializable {
//员工姓名
private String empName;
//员工编号
private Integer empNo;
//员工入职时间
private Date hireDate;
//员工职位
private String job;
//员工工资
private Double salary;
//经理编号
private Integer mgr;
//奖金
private Double comm;
//部门编号
private Integer deptNo;
//省略get and set
}
五、持久层设计
1.接口设计
1).在src目录创建包
包名:cn.jbit.mybatis092901.dao
2).在包下创建接口
接口名:IEmpDao.java
接口中内容:
public interface IEmpDao {
/**
* 10.2.3节示例 :根据员工号删除员工
* @param empNo
*/
public void deleteEmp(int empNo);
}
六、添加相关映射文件
1.在conf下添加配置文件
映射文件名称:EmpDaoMapper.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="cn.jbit.mybatis092901.dao.IEmpDao">
<delete id="deleteEmp" parameterType="int">
DELETE FROM emp WHERE empno= #{empNo}
</delete>
</mapper>
七.持久层实现类设计
1).在src目录下创建包
包名:cn.jbit.mybatis092901.dao.impl
2).在包下创建实现类
实现类名:EmpDaoImpl.java
实现类中的内容:
/**
* 为了使用代码看起来清晰,SqlSession的获取都使用工具类
*/
@Override
public void insertEmp(Emp emp) {
String resource = "mybatis-config.xml";
Reader reader = null;
SqlSessionFactory factory = null;
SqlSession session = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(reader);
session = factory.openSession();
session.delete("cn.jbit.mybatis092901.dao.IEmpDao.deleteEmp",empNo);
session.commit();
} catch (Exception e1) {
e1.printStackTrace();
}finally {
session.close();
}
}
八、在配置文件中添加映射文件引用
1.在mybatis-fonfig.xml文件中添加mapper
<mappers>
<mapper resource="EmpDaoMapper.xml"/>
</mappers>
九、测试操作
1.在项目中创建test目录
/test
2.在test目录下创建包
cn.jbit.mybatis092901.dao
3.在包下创建测试类
类名:EmpDaoTest.java
内容:
public class EmpDaoTest {
//员工类的持久层实现
private static IEmpDao empDao = new EmpDaoImpl();
@Test
public void testDeleteEmp() {
empDao.deleteEmp(3);
}
}
mybatis-删除操作
时间: 2024-08-19 07:50:05
mybatis-删除操作的相关文章
Mybatis级联操作
对于Mybatis级联操作,网上好多资料都在讲级联查询的一些Mapping的标签,但是对于级联更新和插入的资料不是很多,但是这似乎是和Mybatis关系不大,只是之前用Hibernate用习惯了,感觉这些东西是由持久层框架l来维护的,由于Mybatis比Hibernate高效,摒弃了这些,所以对于INSERT和UPDATE的级联关系大部分是由数据库本身去维护的. 级联更新 有两个对象A和B,B的主键是A的外键,先需求是把B的保存后,在A的外键那随之更新: (1)先插入B到数据库中, (2)从数据
MyBatis的操作与配置文件
一.MyBatis使用的两种方式:第一种:方式是自动映射第二种:使用XML方式 二.MyBatis操作: 1.使用Mapper文件方式 2.使用Mapper接口和注解方式 3.mapper文件与mapper接口结合使用(推荐这种方法) 这里介绍使用xml方式(MyBatis操作可以完全使用XML的映射文件进行操作) (一).mapper文件与mapper接口结合使用: 1.编写实体类,添加get和set方法.toString方法 2.创建MyBatis操作的数据访问接口 #MyBatis的操作:
闭散列表的查找、插入和删除操作的完整C代码
/*闭散列表的建立.查找.插入.删除*/ #include <stdio.h> #define NIL -1 //假设关键字为非负整数 #define DEL -2 typedef int KeyType; KeyType HashTable[13]; //便于验证算法,关键字个数假定为不超过13,哈希表长定为13 //关键字插入函数 void InsertHashTable(KeyType k) { for(int i=0; i<13; i++) if( NIL == HashTabl
MyBatis insert操作返回主键
在写毕业设计的时候总是发现有一些小的细节问题,比如说...... MyBatis insert操作后怎么返回主键? 原来不懂的时候是调用一个select语句,将刚刚insert的对象再传入进去查出主键,但是这么写主键就没有意义了,什么都可以放到数据库里面去查. 在说,这样也会引起很多其他的问题.比如说你要查一下post表,在你不知道post_id的情况下你利用了post_name去查询post对象. 万一post_name有重复的呢?怎么办?所以有了这篇博客. 网上有很多大神写了很多mybati
红黑树学习笔记(3)-删除操作
1.设删除的节点为$z$,另外定义节点$x,y$如下: $y=\left\{\begin{matrix}z & z的左孩子或右孩子为空节点\\ Successor(z) & otherwise\end{matrix}\right.$ $x=\left\{\begin{matrix}y.left & y的左孩子不为空\\ y.right & otherwise\end{matrix}\right.$ 其中$Successor$函数的定义在这里 接下来,用$x$替换节点$y$,
Entity Framework 6 Recipes 2nd Edition(10-10)译 - >; 为TPH继承的插入、更新、删除操作映射到存储过程
10-10. 为TPH继承的插入.更新.删除操作映射到存储过程 问题 TPH继承模型,想把它的插入.修改.删除操作映射到存储过程 Solution 假设数据库有一个描述不同种类的产品表(Product )(见Figure 10-13). 而且为这个表的每种产品创建了创建了派生模型,这个模型如Figure 10-14. Figure 10-13. 一个含有鉴别列(ProductType)的产品表, 表的每行按该列的值划分不同的产品 Figure 10-14. TPH继承形式的模型 接下来把这个模型
删除操作——str.subString(0,str.length()-1)
subString是String的一个方法,格式为: public String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串. 该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符.因此,该子字符串的长度为 endIndex-beginIndex. 示例: 截取str字符串的第2个和第三个. String str = "123456789"; str =str.
二叉平衡树的插入和删除操作
1. 二叉平衡树 二叉排序树的时间复杂度和树的深度n有关.当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长度为(n+1)/2,查找效率比较低.提高查找效率,关键在于最大限度地降低树的深度n.因此需要在构成二叉排序树的过程中进行“平衡化”处理,使之成为二叉平衡树. 二叉平衡树,又称AVL树.它或者是一棵空树,或者是具有下列性质的树: 1) 具备二叉排序树的所有性质: 2) 左子树和右子树深度差的绝对值不超过1: 3) 左子树和右子树都是二叉
Hdu 2473(并查集删除操作) Junk-Mail Filter
有木有很吊 加强 加强版 啊 ,看了都不敢做了 ,后来先做了食物链这个我还是看过的,但还是A不掉,没明白神魔意思 ,总而言之,大牛的博客是个好东西,我就那么看了一下,还是不懂怎莫办啊,哎,就那样就A掉了....... 今天我们来谈一下这个并查集的删除操作,根据我对大牛的理解啊,这个并查集的删除操作并不是把原来的节点删除掉,而是用一个替身替掉,现在的这个点只是用作桥梁的作用,即是无用的,del ,,,del ,,,,删除,那些被删掉的就从n开始给他们一个地址,然后即如下代码所示 #i
C++中对字符串进行插入、替换、删除操作
#include <iostream> #include <string> using std::cout; using std::endl; using std::string; int main(void){ string str1="We can insert a string"; string str2="a str into "; //在字符串指定位置前面插入指定字符串 cout <<str1.insert(14,str