2.MyBatis有代理增删改
2.1 创建一个javaweb项目MyBatis_Part1,并创建如下sql脚本
create user holly identified by sys;
grant dba to holly;
conn holly/sys
create table teacher(id number primary key,tname varchar2(20),pwd varchar2(20));
create sequence seq_teacher;
insert into teacher values(seq_teacher.nextval,'holly','');
insert into teacher values(seq_teacher.nextval,'石头','');
insert into teacher values(seq_teacher.nextval,'朱亚楠','');
insert into teacher values(seq_teacher.nextval,'陈明','');
commit;
2.2 在项目的src下创建Configuration.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 type="com.entity.Dept" alias="Dept"/>
</typeAliases> <!-- 链接数据库的环境配置,development开发模式 -->
<environments default="development">
<environment id="development">
<!-- jdbc管理事务 -->
<transactionManager type="jdbc"/>
<!-- 数据源配置 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</dataSource> </environment>
</environments>
<!-- 注册映射文件 -->
<mappers>
<mapper resource="com/mapper/DeptMapper.xml"/>
</mappers> </configuration>
2.3 在src下的com.entity包下创建Teacher.java实体类
package com.entity;
public class Teacher {
private int id;
private String tname;
private String pwd;
public Teacher() {
}
public Teacher(String tname, String pwd) {
this.tname = tname;
this.pwd = pwd;
}
public Teacher(int id, String tname, String pwd) {
this.id = id;
this.tname = tname;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", pwd=" + pwd + ", tname=" + tname + "]";
}
}
Teacher.java
2.4 在src下的com.mapper包下创建TeacherMapper.java映射接口
package com.mapper;
import java.util.List;
import com.entity.Teacher;
public interface TeacherMapper {
//1.查所有
List<Teacher> findAll();
//2.根据id查询
Teacher findById(int id);
//3.添加
int saveTeacher(Teacher teacher);
//4.修改
int updateTeacher(Teacher teacher);
//5.删除
int deleteTeacher(int id);
}
TeacherMapper.java
2.5在src下的com.mapper包下创建TeacherMapper.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" >
<!-- 如果是有代理,则namespace的值必须是映射接口的全路径 -->
<mapper namespace="com.mapper.TeacherMapper">
<!-- 1.查询所有 -->
<select id="findAll" resultType="Teacher">
select * from teacher
</select> <!-- 2.根据id查询所有 -->
<select id="findById" resultType="Teacher" parameterType="int">
select * from teacher where id=#{id}
</select> <!-- 3.添加 -->
<insert id="saveTeacher" parameterType="Teacher">
insert into teacher values(seq_teacher.nextval,#{tname},#{pwd})
</insert> <!-- 4.修改 -->
<update id="updateTeacher" parameterType="Teacher">
update teacher set tname=#{tname},pwd=#{pwd}
</update> <!-- 5.删除 -->
<delete id="deleteTeacher" parameterType="int">
delete from teacher where id=#{id}
</delete>
</mapper>
TeacherMapper.xml
2.6在src下的com.mapper.impl包下创建TeacherMapperImpl.java映射实现类文件
package com.mapper.impl; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.entity.Teacher;
import com.mapper.TeacherMapper;
import com.util.MyBatisUtil; public class TeacherMapperImpl implements TeacherMapper {
/**
*1.查询所有
* */
public List<Teacher> findAll() {
SqlSession sqlsession=MyBatisUtil.getSqlSession(false);
//利用反射产生代理对象(动态代理)
TeacherMapper mapper=sqlsession.getMapper(TeacherMapper.class);
try {
List<Teacher> list=mapper.findAll();
sqlsession.close();
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
} }
/**
* 2.查询单条
*/
public Teacher findById(int id) {
SqlSession sqlsession=MyBatisUtil.getSqlSession(false);
TeacherMapper mapper=sqlsession.getMapper(TeacherMapper.class);
Teacher teacher=null;
try {
teacher = mapper.findById(id);
sqlsession.close();
return teacher;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 添加
*/
public int saveTeacher(Teacher teacher) {
SqlSession sqlsession=MyBatisUtil.getSqlSession(true);
TeacherMapper mapper=sqlsession.getMapper(TeacherMapper.class);
try {
int num=mapper.saveTeacher(teacher);
sqlsession.close();
return num;
} catch (Exception e) {
e.printStackTrace(); return 0;
}
}
/**
* 4.修改
*/
public int updateTeacher(Teacher teacher) {
SqlSession sqlsession=MyBatisUtil.getSqlSession(false);
TeacherMapper mapper=sqlsession.getMapper(TeacherMapper.class);
try {
int num=mapper.updateTeacher(teacher);
sqlsession.close();
return num;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 5.根据id删除
*/
public int deleteTeacher(int id) {
SqlSession sqlsession=MyBatisUtil.getSqlSession(false);
TeacherMapper mapper=sqlsession.getMapper(TeacherMapper.class);
try {
int num=mapper.deleteTeacher(id);
sqlsession.close();
return num;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
} }
TeacherMapperImpl.java
2.MyBatis有代理增删改的更多相关文章
- MyBatis简单的增删改查以及简单的分页查询实现
MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...
- Mybatis入门之增删改查
Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...
- MyBatis -- 对表进行增删改查(基于注解的实现)
1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1 首先须要定义映射sql的 ...
- Spring Boot 使用Mybatis注解开发增删改查
使用逆向工程是遇到的错误 错误描述 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): c ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- (一)Mybatis基本配置,Statement方式,动态代理增删改查
首先明白Mybatis是干什么的,之前使用jdbc操作数据库时候要写很多语句,获取光标,连接,获取具体对象进行相应操作,代码过于繁琐,所以现在有了Mybatis,它将这个操作整合在了一起,你不需要关心 ...
- 基于SSM之Mybatis接口实现增删改查(CRUD)功能
国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...
- SpringMVC,MyBatis商品的增删改查
一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...
- mybatis中的增删改查操作
在这一个部分,主要进行增删改查的示例书写. 增删改查可以基于xml的,也可以基于注解的方式. 一:对单条数据的查询 1.目录结构 这个使得目录更加清晰 2.User.java 这个使用以前的user表 ...
随机推荐
- CentOS5、6 NFS的安装配置及mount方法
一.环境介绍: 服务器:centos 192.168.1.225 客户端:centos 192.168.1.226 二.安装: NFS的安装配置:centos 5 : yum -y install n ...
- js正则验证邮箱格式
首先总结一下邮箱的格式,邮箱由@分隔,左侧为用户名,右侧为邮箱域名,用户名可以由字母.数字._.-以及.组成,但是必须是以字母或数字开头,邮箱的域名是由字母.数字.-和.组成的,但是必须以.加上字母的 ...
- SQLSERVER2012 列存储索引的简单研究和测试
SQLSERVER2012 列存储索引的简单研究和测试 SQLSERVER2012 列存储索引的简单研究和测试 看这篇文章之前可以先看一下下面这两篇文章: 列存储索引 http://www.cnblo ...
- javascript的笔记
好久没写东西了,最近有些迷茫(好吧,是借口),也是好久没有接触js的内容了,今天就借此契机,顺便复习下吧. 就看看javascript中的函数四大调用模式和this的关系 1.方法调用模式 当一个函数 ...
- C语言的变量的内存分配
今晚看了人家写的一个关于C语言内存分配的帖子,发现真是自己想找的,于是乎就收藏了... 先看一下两段代码: char* toStr() { char *s = "abcdefghijkl&q ...
- 纯Python综合图像处理小工具(1)分通道直方图
平时工作经常需要做些图像分析,需要给图像分通道,计算各个通道的直方图分布特点,这个事儿photoshop也能做,但是用起来不方便,且需要电脑上安装有PS软件,如果用OpenCV, 更是需要在visua ...
- Nginx学习笔记4 源码分析
Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...
- PHP:获取指定日期所在月的开始日期与结束日期
/** * 获取指定日期所在月的开始日期与结束日期 * @param string $date * @param boolean 为true返回开始日期,否则返回结束日期 * @return arra ...
- [设计模式-创建型]工厂方法(Factory Method)
概括 名称 Factory Method 结构 动机 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使一个类的实例化延迟到其子类. 适用性 当一个类不知道它所必 ...
- hdu 1217
判断通过货币的兑换能否获利,,最短路,这里是乘法,, #include<stdio.h> #include<string.h> double map[31][31],ans[3 ...