实现简单的crud,上一节已经进行最简单的查询

这次在oracle数据库中操作,就在oracle实例中操作,分别是Dept表和Emp表,所以配置文件需要改动。

1.实体类

Dept类

  1. public class Dept {
  2. private int deptno;//部门编号
  3. private String dname;//部门名称
  4. private String loc;//所在地区
  5. private List<Emp> emps;//一对多关系
  6.  
  7. public List<Emp> getEmps() {
  8. return emps;
  9. }
  10. public void setEmps(List<Emp> emps) {
  11. this.emps = emps;
  12. }
  13. public int getDeptno() {
  14. return deptno;
  15. }
  16. public void setDeptno(int deptno) {
  17. this.deptno = deptno;
  18. }
  19. public String getDname() {
  20. return dname;
  21. }
  22. public void setDname(String dname) {
  23. this.dname = dname;
  24. }
  25. public String getLoc() {
  26. return loc;
  27. }
  28. public void setLoc(String loc) {
  29. this.loc = loc;
  30. }
  31.  
  32. }

Emp类(只取几个字段,并没有把所有的列转换过来)

  1. public class Emp {
  2. private int empno;//员工编号
  3. private String ename;//员工姓名
  4. private Dept dept;//部门对象
  5. private String job;//员工工作
  6.  
  7. public String getJob() {
  8. return job;
  9. }
  10. public void setJob(String job) {
  11. this.job = job;
  12. }
  13. public int getEmpno() {
  14. return empno;
  15. }
  16. public void setEmpno(int empno) {
  17. this.empno = empno;
  18. }
  19. public String getEname() {
  20. return ename;
  21. }
  22. public void setEname(String ename) {
  23. this.ename = ename;
  24. }
  25. public Dept getDept() {
  26. return dept;
  27. }
  28. public void setDept(Dept dept) {
  29. this.dept = dept;
  30. }
  31. }

2.数据库连接文件 db.properties

  1. driver=oracle.jdbc.driver.OracleDriver//驱动名
  2. url=jdbc:oracle:thin:@localhost:1521:MLDN//地址名
  3. username=scott//用户名
  4. password=tiger//密码

3.编写config.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.  
  7. <!-- properties属性配置文件的引入 -->
  8. <properties resource="db.properties"></properties>
  9. <!-- setting设置,调整mybaits运行行为 -->
  10. <settings>
  11. <!-- 匹配下划线到驼峰式命名法 -->
  12. <setting name="mapUnderscoreToCamelCase" value="true"/>
  13. <setting name="safeRowBoundsEnabled" value="false"/>
  14. <setting name="cacheEnabled" value="true"/>
  15. <setting name="lazyLoadingEnabled" value="true"/>
  16. <setting name="multipleResultSetsEnabled" value="true"/>
  17. <setting name="useColumnLabel" value="true"/>
  18. <setting name="useGeneratedKeys" value="false"/>
  19. <setting name="autoMappingBehavior" value="PARTIAL"/>
  20. <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  21. <setting name="defaultExecutorType" value="SIMPLE"/>
  22. <setting name="defaultStatementTimeout" value="25"/>
  23. <setting name="defaultFetchSize" value="100"/>
  24. <setting name="localCacheScope" value="SESSION"/>
  25. <setting name="jdbcTypeForNull" value="OTHER"/>
  26. <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
  27. </settings>
  28. <!-- 类起别名 -->
  29. <typeAliases>
  30. <!-- <typeAlias type="com.qyxy.entity.Dept" alias="Dept"/> -->
  31. <package name="com.qyxy.entity"/>
  32. </typeAliases>
  33. <!-- 设置要使用的数据库环境 -->
  34. <environments default="development">//选择mysql配置
  35.  
  36. <environment id="development">
  37. <transactionManager type="JDBC" />
  38. <dataSource type="POOLED">
  39. <property name="driver" value="${driver}" />
  40. <property name="url" value="${url}" />
  41. <property name="username" value="${username}" />
  42. <property name="password" value="${password}" />
  43. </dataSource>
  44. </environment>
  45.  
  46. <environment id="mysql">
  47. <transactionManager type="JDBC" />
  48. <dataSource type="POOLED">
  49. <property name="driver" value="${jdbc.driverClassName}" />
  50. <property name="url" value="${jdbc.url}" />
  51. <property name="username" value="${jdbc.username}" />
  52. <property name="password" value="${jdbc.password}" />
  53. </dataSource>
  54. </environment>
  55.  
  56. </environments>
  57.  
  58. <!-- 定义不同的数据库厂商标识 -->
  59. <databaseIdProvider type="DB_VENDOR">
  60. <property name="SQL Server" value="sqlserver"/>
  61. <property name="DB2" value="db2"/>
  62. <property name="Oracle" value="oracle" />
  63. <property name="MySql" value="mysql" />
  64. </databaseIdProvider>
  65.  
  66. <!-- 映射的sql文件 -->
  67. <mappers>
  68. <package name="com.qyxy.mapper"/>//所在包
  69.  
  70. </mappers>
  71. </configuration>

4.编写类的mapper.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper namespace="com.qyxy.mapper.DeptMapper">
  7.  
  8. <select id="selectDept" resultType="Dept" databaseId="oracle">
  9. select *
  10. from dept where deptno = #{deptno}
  11. </select>
  12. <select id="findAll" resultType="Dept">
  13. select * from dept
  14. </select>
  15. <!-- 查询指定信息 -->
  16. <select id="find" resultType="Dept">
  17. select * from dept where
  18. dname=#{dname} and loc=#{loc}
  19. </select>
  20. <!-- 新增指定对象 -->
  21. <insert id="saveDept">
  22. insert into dept(deptno,dname,loc)
  23. values(#{deptno},#{dname},#{loc})
  24. </insert>
  25. <!-- 删除指定对象 -->
  26. <delete id="deleteDept">
  27. delete from dept where deptno=#{deptno}
  28. </delete>
  29. <!-- 修改指定对象 -->
  30. <update id="updateDept">
  31. update dept
  32. set dname=#{dname},loc=#{loc}
  33. where
  34. deptno=#{deptno}
  35. </update>
  36.  
  37. <!-- 新增获取自动生成的主键id oracle中有效 -->
  38. <insert id="insertDept">
  39. <selectKey keyProperty="deptno" resultType="int" keyColumn="deptno"
  40. order="BEFORE">
  41. select SEQ_DEPT_DEPTNO.nextval from dual
  42. </selectKey>
  43. insert into dept(deptno,dname,loc) values (#{deptno},#{dname},#{loc})
  44. </insert>
    ------------------------------------------------------------------------------------------------补充
      <!-- 新增多个对象 mysql中操作有效 -->
          <insert id="saveDepts" useGeneratedKeys="true" keyProperty="deptno">
              insert into dept(dname,loc) values
              <foreach item="item" collection="list" separator=",">
                  (#{item.dname},#{item.loc})
              </foreach>
          </insert>
  45. </mapper>

5.写mapper接口和测试方法,这里就不一一写了,大家自己测试吧

mybatis总结(二)的更多相关文章

  1. MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致

    MyBatis系列二  之   数据库列名于程序实体类中字段名称不一致 情景:当数据库中的列名与我们程序实体类中的字段名称不一致         使用ResultMap节点配置信息  在映射文件中  ...

  2. MyBatis笔记二:配置

    MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...

  3. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  4. 33、mybatis(二)

    第十六章回顾SQL99中的连接查询 1)内连接 2)外连接 3)自连接 第十七章回顾hibernate多表开发 1)一对一 2)一对多 3)多对多 第十八章 mybatis一对一映射[学生与身份证] ...

  5. mybatis(二)接口编程 、动态sql 、批量删除 、动态更新、连表查询

    原理等不在赘述,这里主要通过代码展现. 在mybatis(一)基础上,新建一个dao包,并在里面编写接口,然后再在xml文件中引入接口路径,其他不变,在运用阶段将比原始方法更节约时间,因为不用再去手动 ...

  6. MyBatis之二:简单增删改查

    这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...

  7. Java框架之Mybatis(二)

    本文主要介绍 Mybatis(一)之后剩下的内容: 1 mybatis 中 log4j的配置 2 dao层的开发(使用mapper代理的方式) 3 mybatis的配置详解 4 输入输出映射对应的类型 ...

  8. springboot集成mybatis(二)

    上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...

  9. spring boot整合mybatis方式二

    方式二: pom文件导入maven依赖: <dependency> <groupId>org.springframework.boot</groupId> < ...

  10. Java高级框架——Mybatis(二)

    十.三种查询方式 1. selectList()返回值为List<resultType属性控制> 1.1 适用于查询结果都需要遍历的需求 List<Flower> list = ...

随机推荐

  1. malloc、calloc、realloc的区别(转)

    (1)C语言跟内存分配方式 <1>从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...

  2. 04-spring-控制反转

    使用myeclipse开发spring一个Demo. 第一步:新建一个web project. 第二步:安装spring开发的支持包. 安装后多了这几个东西 3,定义一个操作接口: package c ...

  3. vs2017安装过程问题及解决方法

    1. 问题:C++ 无法打开 源 文件 "errno.h"等文件 解决方法:https://jingyan.baidu.com/article/8ebacdf0167b2249f6 ...

  4. linux下各种形式的shell加法操作总结

    linux 下shell加法操作总结: #!/bin/bash   n=1;echo -n "$n "   let "n = $n + 1" echo -n & ...

  5. Memcached 教程

    http://www.runoob.com/memcached/memcached-tutorial.html

  6. delete与delete [] 真正差别

    我们通常从教科书上看到这种说明: delete 释放new分配的单个对象指针指向的内存 delete[] 释放new分配的对象数组指针指向的内存 那么,依照教科书的理解,我们看下以下的代码: int ...

  7. TypeScript 入门指南

    你是否听过 TypeScript? TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行.TypeS ...

  8. 多线程-AbstractQueuedSynchronizer(AQS)

    概述 从使用者的角度,AQS的功能可分为两类:独占功能和共享功能.它的子类中,要么实现并使用了它独占功能的API,要么使用了共享锁的功能,而不会同时使用两套API,即使是它的子类ReentrantRe ...

  9. DDR 复位

    将FPGA代码和实际的数字电路对应起来. always @ (negedge clk_ref_200)     begin     if(ddr3_init_done)    'b10)   'b10 ...

  10. 二次开发第N天。。。。。。。。自动分页问题

    phpcms\modules\content\fields\pages\form.inc.php 注意修改时,如果是gbk版本可以直接用记事本修改保存!如果是utf8 要用工具修改,或者保存的时候要记 ...