1.MyBaits无代理全套增删改
一.mybatis使用的准备工作
1.找到mybatis所需要的jar文件:
mybatis-3.2.3.jar
mybatis-spring-1.2.1.jar
2.解压mybatis-3.2.3.jar文件找到如下两个dtd文件
mybatis-3-config.dtd
mybatis-3-mapper.dtd
3.记住mybatis配置的关键key
mybatis配置:
--映射文件
public id : -//mybatis.org//DTD Mapper 3.0//EN
system id : http://mybatis.org/dtd/mybatis-3-mapper.dtd
--主配置文件
public id : -//mybatis.org//DTD Config 3.0//EN
system id :http://mybatis.org/dtd/mybatis-3-config.dtd
4.在myeclipse中配置mybatis的环境,即配置dtd文件,以便写代码时有提示
5.将mybatis的dtd文件配置到myeclipse中步骤如下:







二、mybatis无代理全套增删改查
2.1 创建一个javaweb项目MyBatis_Part1
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包下创建Dept.java文件
package com.entity;
public class Dept {
private int deptno;
private String dname;
private String loc;
public Dept() {
}
public Dept(int deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int 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;
}
@Override
public String toString() {
return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc
+ "]";
}
}
2.4 在src下的com.mapper包下创建DeptMapper.java文件
package com.mapper; import java.util.List; import com.entity.Dept; /**
* 映射接口
* @author pc
*
*/
public interface DeptMapper {
/**
* 查询所有
* @return
*/
public List<Dept> getAll();
/**
* 根据id查询
* @param id
* @return
*/
Dept findId(int deptno);
/**
* 修改对象
* @param dept
* @return
*/
int updateDept(Dept dept);
/**
* 保存
* @param dept
* @return
*/
int saveDept(Dept dept);
/**
* 删除
* @param id
* @return
*/
int deleteById(int id); }
2.5 在src下的com.mapper包下创建DeptMapper.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="test">
<!-- id的值必须要和映射接口的方法名保持一致, -->
<!-- 查询所有 -->
<select id="getAll" resultType="Dept">
select * from dept
</select> <!--2. 根据id查询 -->
<!-- parameterType参数类型 -->
<select id="findId" resultType="Dept" parameterType="int">
select * from dept where deptno=#{deptno}
</select> <!-- 3.修改 -->
<update id="updateDept" parameterType="Dept">
update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}
</update> <!-- 4.保存 -->
<insert id="saveDept" parameterType="Dept">
insert into dept values(#{deptno},#{dname},#{loc})
</insert> <!-- 5.删除 -->
<delete id="deleteById" parameterType="int">
delete from dept where deptno=#{deptno}
</delete>
</mapper>
2.6 在src下的com.util包下创建MyBatisUtil.java
package com.util; import java.io.InputStream;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; /**
* 获取sqlsession工具类
* @author pc
*
*/
public class MyBatisUtil {
//定义sqlsessionFactory对象
private static SqlSessionFactory sqlSessionFactory=null; static{
//读取xml文件
InputStream is=MyBatisUtil.class
.getClassLoader()
.getResourceAsStream("Configuration.xml");
//Reader rader=Resources.getResourceAsReader("Configuration.xml"); //创建sqlsessionFactory对象
sqlSessionFactory=new SqlSessionFactoryBuilder().build(is); }
/**
* 获取SqlSession对象的方法
* @param commit 如果为true表示执行完操作自动提交事务,false反之
* @return
*/
public static SqlSession getSqlSession(boolean iscommit){
return sqlSessionFactory.openSession(iscommit);
} }
2.7 在src下的com.mapper.impl包下创建DeptMapperImpl.java
package com.mapper.impl; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.entity.Dept;
import com.mapper.DeptMapper;
import com.util.MyBatisUtil; public class DeptMapperImpl implements DeptMapper {
/**
* 1.查询所有
*/
public List<Dept> getAll() {
//1.获取sqlsession,执行完操作不自动提交事务
SqlSession sqlSession=MyBatisUtil.getSqlSession(false); //2.调用方法执行操作,
//Stirng类型的参数=映射文件的namespace的值.映射文件的id
List<Dept> list=sqlSession.selectList("test.getAll");
//3.关闭sqlsession
sqlSession.close();
return list;
}
/**
* 2.查询单条
*/
public Dept findId(int deptno) {
//1.获取sqlsession,执行完操作不自动提交事务
SqlSession sqlSession=MyBatisUtil.getSqlSession(false); Dept dept=sqlSession.selectOne("test.findId", deptno); sqlSession.close();
return dept;
} /**
* 3.添加
*/
public int saveDept(Dept dept) {
//1.获取sqlsession,执行完操作不自动提交事务
SqlSession sqlSession=MyBatisUtil.getSqlSession(true); int num=sqlSession.insert("test.saveDept", dept); sqlSession.close();
return num;
}
/**
* 4.删除
*/
public int deleteById(int id) {
//1.获取sqlsession,执行完操作不自动提交事务
SqlSession sqlSession=MyBatisUtil.getSqlSession(true); int num=sqlSession.delete("test.deleteById", id);
sqlSession.close();
return num;
} /**
* 5.修改
*/
public int updateDept(Dept dept) {
//1.获取sqlsession,执行完操作不自动提交事务
SqlSession sqlSession=MyBatisUtil.getSqlSession(true); int num=sqlSession.update("test.updateDept", dept);
sqlSession.close();
return num;
} }
2.8 在src下的com.test包下创建Test.java
package com.test; import java.util.List; import com.entity.Dept;
import com.mapper.DeptMapper;
import com.mapper.impl.DeptMapperImpl; public class Test { /**
* @param args
*/
public static void main(String[] args) {
DeptMapper mapper=new DeptMapperImpl(); System.out.println("-------------3.添加--------------");
/* Dept savedept=new Dept(60, "学术部", "8号楼");
int num= mapper.saveDept(savedept);
if(num>0){
System.out.println("insert success");
}else{ System.out.println("insert fail");
}
*/
System.out.println("----------1.查询所有--------------"); List<Dept> list=mapper.getAll();
for (Dept dept : list) {
System.out.println(dept);
}
System.out.println("----------2.查询单条--------------");
Dept dept= mapper.findId(10);
System.out.println(dept); System.out.println("-----------4.修改--------");
/* Dept updatedept=mapper.findId(60);
updatedept.setDname("huolly11");
updatedept.setLoc("222"); int upnum= mapper.updateDept(updatedept);
if(upnum>0){
System.out.println("update success");
}else{
System.out.println("update fail"); }*/
System.out.println("------------6.删除---------------");
/* Dept deldept=mapper.findId(50);
int delnum=mapper.deleteById(deldept.getDeptno());
if(delnum>0){
System.out.println("delete success");
}else{
System.out.println("delete fail"); }*/
} }
1.MyBaits无代理全套增删改的更多相关文章
- 5、Spring+Struts2+MyBatis+分页(mybatis无代理)增删改查
1.创建如下项目结构 2.在src下的com.entity包下创建Dept.java package com.entity; /** * 部门表 * @author Holly老师 * */ publ ...
- 告别无止境的增删改查:Java代码生成器
对于一个比较大的业务系统,我们总是无止境的增加,删除,修改,粘贴,复制,想想总让人产生一种抗拒的心里.那有什么办法可以在正常的开发进度下自动生成一些类,配置文件,或者接口呢? 有感于马上要做个比较 ...
- 告别无止境的增删改查--Java代码生成器
转自:http://www.cnblogs.com/zhuYears/archive/2012/02/29/2373491.html 告别无止境的增删改查--Java代码生成器 有感于马上要做个比较大 ...
- 仿联想商城laravel实战---5、无刷新的增删改查(动态页面更新的三种方式(html))
仿联想商城laravel实战---5.无刷新的增删改查(动态页面更新的三种方式(html)) 一.总结 一句话总结: 直接js增加删除修改html 控制器直接返回处理好的页面 用双向绑定插件比如vue ...
- Hibernate全套增删改查+分页
1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...
- 3.struts2访问Servlet API,并和mybaits实现全套增删改查
1.创建数据库脚本userinfo.sql prompt PL/SQL Developer import file prompt Created on 2016年5月19日 by pc set fee ...
- 14.hibernate的反向生成实现全套增删改查
图片顺序就是步骤顺序 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
- 5.Hibernate实现全套增删改查和ajax异步分页
1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...
- SSH 两个表全套增删改(运动员住宿管理)
0.创建如下oracle的命令 create table HOTALINFO ( HOTALID ) not null, HOTALNAME ) not null, HOTALADDRESS ) no ...
随机推荐
- 关于在框架中使用curl的思考,以及,curl其实很好用
初步猜想: 在接触到框架文档的第一阶段时,会觉得控制器调用模型就是一件很简单的事,tp中用D方法或者M方法来实例化模型,laravel中用命名空间来加载模型,CI中用$this->load-&g ...
- nginx(2)
上一篇: nginx(1) 负载均衡: linux集群的一种常见方式,即由多台服务器组成一个服务器集合实现某个特定需求,其中每台服务器都是等价的,从而实现负载均摊的目的. 反向代理: 是指以代理服务器 ...
- NYOJ-括号配对问题 <技巧性的非栈道法>
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100) ...
- gimagex 2.0.17 汉化版
软件名称: gimagex 2.0.17 汉化版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 1.31MB 图片预览: 软件简介: gimagex 2. ...
- java读写锁源码分析(ReentrantReadWriteLock)
读锁的调用,最终委派给其内部类 Sync extends AbstractQueuedSynchronizer /** * 获取读锁,如果写锁不是由其他线程持有,则获取并立即返回: * 如果写锁被其他 ...
- HDU 5869 Different GCD Subarray Query
离线操作,树状数组,$RMQ$. 这个题的本质和$HDU$ $3333$是一样的,$HDU$ $3333$要求计算区间内不同的数字有几个. 这题稍微变了一下,相当于原来扫描到$i$的之后是更新$a[i ...
- Ajax.BeginForm无法调用 ajaxOptions的js函数
使用ajax.beginForm无法调用ajaxOptions的js函数的原因,一般都是缺少以下2个JS文件: 1,Install-Package jQuery –version 1.10.22,In ...
- Qt 学习笔记
继承自QObject 的Qt类都具有支持信号和槽的能力,并且在子类的实现代码中直接使用connect()函数 pwdLineEdit->setEchoMode(QLineEdit::Passwo ...
- [河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=251 规则: 1.若某竞标价唯一,则胜出 2.若不存在唯一竞标价,则投标次数最少竞标价中标 ...
- Redis--Latest Windows Version
Redis Windows Ver https://github.com/MSOpenTech/redis/releases service-install.batredis-server.exe - ...