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表 ...
随机推荐
- ruby gsub gsub! chomp chomp! 以及所有类似函数用法及区别
ruby中带“!"和不带"!"的方法的最大的区别就是带”!"的会改变调用对象本身了.比方说str.gsub(/a/, 'b'),不会改变str本身,只会返回一个 ...
- Leetcode: UniquePath II
Description: Follow up for "Unique Paths": Now consider if some obstacles are added to the ...
- ThreadPool&ManualResetEvent
在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPool(线程池)来解决: 另一种情况:线程 ...
- javascript继承的写法
原文链接:http://js8.in/698.html. 构造函数继承: 第一种方法是使用prototype属性: 这里也可以直接Child.prototype=new P();考虑到P构造函数的参数 ...
- Cocos2d-x--Box2D使用GLES-Render.h渲染查看刚体
分为两部分:文件拷贝和代码实现 1.文件拷贝: 在TestCpp下找到GLES-Render.h和GLES-Render.cpp两个文件 复制到G:\cocos2d-2.1rc0-x-2.1.3\co ...
- 开源 免费 java CMS - FreeCMS1.4-功能说明-站点管理
下载地址:http://code.google.com/p/freecms/ 站点管理 FreeCMS支持网站群模式,并支持无限树级管理. 1. 添加一级站点 从左侧管理菜单点击站点管理进入. 提示 ...
- react+redux渲染性能优化原理
大家都知道,react的一个痛点就是非父子关系的组件之间的通信,其官方文档对此也并不避讳: For communication between two components that don't ha ...
- redis 学习笔记——redis集群
redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...
- UIView的生命周期和layout方法总结
生命周期 1. loadView 什么时候调用? 每次访问UIViewController的view时候并且view == nil时候调用. 如何实现? 1> 如果在初始化UIViewContr ...
- 【Coursera - machine learning】 Linear regression with one variable-quiz
Question 1 Consider the problem of predicting how well a student does in her second year of college/ ...