一.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无代理全套增删改的更多相关文章

  1. 5、Spring+Struts2+MyBatis+分页(mybatis无代理)增删改查

    1.创建如下项目结构 2.在src下的com.entity包下创建Dept.java package com.entity; /** * 部门表 * @author Holly老师 * */ publ ...

  2. 告别无止境的增删改查:Java代码生成器

    对于一个比较大的业务系统,我们总是无止境的增加,删除,修改,粘贴,复制,想想总让人产生一种抗拒的心里.那有什么办法可以在正常的开发进度下自动生成一些类,配置文件,或者接口呢?   有感于马上要做个比较 ...

  3. 告别无止境的增删改查--Java代码生成器

    转自:http://www.cnblogs.com/zhuYears/archive/2012/02/29/2373491.html 告别无止境的增删改查--Java代码生成器 有感于马上要做个比较大 ...

  4. 仿联想商城laravel实战---5、无刷新的增删改查(动态页面更新的三种方式(html))

    仿联想商城laravel实战---5.无刷新的增删改查(动态页面更新的三种方式(html)) 一.总结 一句话总结: 直接js增加删除修改html 控制器直接返回处理好的页面 用双向绑定插件比如vue ...

  5. Hibernate全套增删改查+分页

    1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...

  6. 3.struts2访问Servlet API,并和mybaits实现全套增删改查

    1.创建数据库脚本userinfo.sql prompt PL/SQL Developer import file prompt Created on 2016年5月19日 by pc set fee ...

  7. 14.hibernate的反向生成实现全套增删改查

    图片顺序就是步骤顺序 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.

  8. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

  9. SSH 两个表全套增删改(运动员住宿管理)

    0.创建如下oracle的命令 create table HOTALINFO ( HOTALID ) not null, HOTALNAME ) not null, HOTALADDRESS ) no ...

随机推荐

  1. 关于在框架中使用curl的思考,以及,curl其实很好用

    初步猜想: 在接触到框架文档的第一阶段时,会觉得控制器调用模型就是一件很简单的事,tp中用D方法或者M方法来实例化模型,laravel中用命名空间来加载模型,CI中用$this->load-&g ...

  2. nginx(2)

    上一篇: nginx(1) 负载均衡: linux集群的一种常见方式,即由多台服务器组成一个服务器集合实现某个特定需求,其中每台服务器都是等价的,从而实现负载均摊的目的. 反向代理: 是指以代理服务器 ...

  3. NYOJ-括号配对问题 <技巧性的非栈道法>

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3  描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100) ...

  4. gimagex 2.0.17 汉化版

    软件名称: gimagex 2.0.17 汉化版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 1.31MB 图片预览: 软件简介: gimagex 2. ...

  5. java读写锁源码分析(ReentrantReadWriteLock)

    读锁的调用,最终委派给其内部类 Sync extends AbstractQueuedSynchronizer /** * 获取读锁,如果写锁不是由其他线程持有,则获取并立即返回: * 如果写锁被其他 ...

  6. HDU 5869 Different GCD Subarray Query

    离线操作,树状数组,$RMQ$. 这个题的本质和$HDU$ $3333$是一样的,$HDU$ $3333$要求计算区间内不同的数字有几个. 这题稍微变了一下,相当于原来扫描到$i$的之后是更新$a[i ...

  7. Ajax.BeginForm无法调用 ajaxOptions的js函数

    使用ajax.beginForm无法调用ajaxOptions的js函数的原因,一般都是缺少以下2个JS文件: 1,Install-Package jQuery –version 1.10.22,In ...

  8. Qt 学习笔记

    继承自QObject 的Qt类都具有支持信号和槽的能力,并且在子类的实现代码中直接使用connect()函数 pwdLineEdit->setEchoMode(QLineEdit::Passwo ...

  9. [河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=251 规则: 1.若某竞标价唯一,则胜出 2.若不存在唯一竞标价,则投标次数最少竞标价中标 ...

  10. Redis--Latest Windows Version

    Redis Windows Ver https://github.com/MSOpenTech/redis/releases service-install.batredis-server.exe - ...