一.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. CFround#380 div2

    题目链接:http://codeforces.com/contest/738 A题:SB题. B题:SB题. C题:二分. D题:贪心. E题:乱搞. F题:设f[i][j][k]代表甲先手,左边消去 ...

  2. 曾经让我很吐血的Bug(初学者)

    1.MSSql 就是 sql Server. 2.用session的时候一定要先实现接口IRequiresSessionState: 3.form表单中type=file传送文件的时候一定要在form ...

  3. Shell终端收听音乐--豆瓣FM命令行版

    douban.fm Terminal-based douban.fm inspired by douban.fm.该版本版基于Python2.* 安装Python2.* pacman -S pytho ...

  4. 终于了解了User-Agent的历史了

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? 1 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.3 ...

  5. 导入spring源码到eclipse

    1.1安装Gradle 可以从http://www.gradle.org/downloads页面下载Gradle.下载后将文件解压到指定目录,我放在D:\软件\gradle-3.3,然后设置环境变量. ...

  6. 运行ORB-SLAM笔记_编译篇(一)

    1.下载代码   https://github.com/raulmur/ORB_SLAM/    (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文) 2.打开后如下 就好像是用一件新产品 ...

  7. UITableView优化方案

    1.UITableView的简单认识 > UITableView最核心的思想就是UITableViewCell的重用机制.简单的理解就是:UITableView只会创建一屏幕(或一屏幕多一点)的 ...

  8. Fedora25

    Fedora默认情况是没有装flash的,首先输入https://get.adobe.com/flashplayer/?loc=cn,选择.rpm包,点击立即下载,下载完成后进到download目录, ...

  9. c#中,委托Func的简单实践

    c# 委托Func的简单实践最近才真正的接触委托,所以针对Func类型的委托,做一个实践练习. 首先说一些我对委托的初级理解:"就是把方法当做参数,传进委托方法里". 我平时用到的 ...

  10. java 基础知识2