一.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. JavaEE XML StAX创建

    StAX创建XML文档 @author ixenos 1. 如果通过DOM树来创建XML文件时,发现这个DOM树没有其他用途,那么这种方式就不是很高效,这时我们可以使用StAX API直接将XML树写 ...

  2. 文档在线预览开源实现方案二:OpenOffice + pdf.js

    文档在线预览的另一种实现方式采用的技术栈是OpenOffice + pdf.js, office文档转换为pdf的工作依然由OpenOffice的服务来完成,pdf生成后我们不再将其转换为其他文件而是 ...

  3. swift3 循环滚动视图 自适应横竖屏 reload数据源

    一句话创建banner图,可时时刷新 用到了 SnapKit.SDWebImage两个第三方库 实现步骤------------------------------------------------ ...

  4. Canvas裁剪和Region、RegionIterator

    主要是看这边文章学习:http://blog.csdn.net/lonelyroamer/article/details/8349601 Region.op参数 DIFFERENCE(0), //最终 ...

  5. HDU 5904 LCIS

    $dp$. 这题的突破口在于要求数字是连续的. 可以分别记录两个串以某个数字为结尾的最长上升长度,然后枚举一下以哪个数字为结尾就可以得到答案了. 因为$case$有点多,不能每次$memset$,额外 ...

  6. Egret 学习之 入口函数 及开始编写程序(三)

    1,Egret的程序入口: C和java是以一个main函数作为入口,但egret类似于ActionScript 是以一个文档类作为入口,确切的说是以这个文档类的构造函数作为入口: 2,文档类的构造函 ...

  7. NodeJs md5 sha1加密

    var crypto = require('crypto');module.exports = {  md5: (str)=> {    return crypto.createHash('md ...

  8. NET 2.0(C#)调用ffmpeg处理视频的方法

    另外:ffmpeg的net封装库 http://www.intuitive.sk/fflib/ NET 2.0 调用FFMPEG,并异步读取输出信息的代码...public void ConvertV ...

  9. html布局,左侧固定右侧自适应

    前几天看到我们的UI稿,要实现左侧固定树结构,右侧自适应.想着自己写过几次但是每次都会忘记,在这里做个笔记. 第一种方法: <!DOCTYPE html> <html lang=&q ...

  10. 一个JQuery发送ajax请求

    环境: 1.jQuery v2.1.1 2.ThinkPHP 3.2.3 HTML页面: <button type="button" id="cat" o ...