1.mybatis一对一映射

Student--Card

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.juaner.one2one.Student">
  5. <resultMap id="studentMap" type="com.juaner.one2one.Student">
  6. <id property="id" column="sid"/>
  7. <result property="name" column="sname"/>
  8. <!--引入CardMapper.xml文件中的映射
  9. property:Student类的关联属性
  10. resultMap:引入CardMapper.xml中的映射类型 namespace+id
  11. -->
  12. <association property="card" resultMap="com.juaner.one2one.Card.cardMap"/>
  13. </resultMap>
  14. <select id="findById" parameterType="int" resultMap="studentMap">
  15. SELECT s.sid,s.sname,c.cid,c.cnum
  16. FROM student s,card c
  17. WHERE s.scid = c.cid
  18. AND c.cid =#{id}
  19. </select>
  20. <!--只封装查询出来的字段-->
  21. <select id="findByName" parameterType="string" resultMap="studentMap">
  22. SELECT s.sid,c.cnum
  23. FROM student s,card c
  24. WHERE s.scid = c.cid
  25. AND s.sname = #{name}
  26. </select>
  27. </mapper>
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.juaner.one2one.Card">
  5. <resultMap id="cardMap" type="com.juaner.one2one.Card">
  6. <id property="id" column="cid"/>
  7. <result property="num" column="cnum"/>
  8. </resultMap>
  9. </mapper>

2.mybatis一对多映射

Student---Grade

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.juaner.one2many.Student">
  5. <resultMap id="studentMap" type="com.juaner.one2many.Student">
  6. <id property="id" column="sid"/>
  7. <result property="name" column="sname"/>
  8. <association property="grade" resultMap="com.juaner.one2many.Grade.gradeMap"/>
  9. </resultMap>
  10. <select id="findAllByName" parameterType="string" resultMap="studentMap">
  11. SELECT s.sid,s.sname,g.gid,g.gname
  12. FROM studentg s,grade g
  13. WHERE s.sgid = g.gid
  14. AND g.gname=#{name}
  15. </select>
  16. </mapper>
  1. <mapper namespace="com.juaner.one2many.Grade">
  2. <resultMap id="gradeMap" type="com.juaner.one2many.Grade">
  3. <id property="id" column="gid"/>
  4. <result property="name" column="gname"/>
  5. </resultMap>
  6. <select id="findByName" parameterType="string" resultMap="gradeMap">
  7. SELECT s.sid,s.sname,g.gid,g.gname
  8. FROM studentg s,grade g
  9. WHERE s.sgid = g.gid
  10. AND s.sname = #{name}
  11. </select>
  12. </mapper>

3.mybatis多对多映射

Student--Course

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.juaner.many2many.Student">
  5. <resultMap id="studentMap" type="com.juaner.many2many.Student">
  6. <id property="id" column="sid"/>
  7. <result property="name" column="sname"/>
  8. </resultMap>
  9. <select id="findAllByCourseName" parameterType="string" resultMap="studentMap">
  10. SELECT s.sid,s.sname,c.cid,c.cname
  11. FROM studentc s,courses c,middles m
  12. WHERE s.sid = m.msid AND c.cid=m.mcid
  13. AND c.cname=#{name}
  14. </select>
  15. </mapper>
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.juaner.many2many.Course">
  5. <resultMap id="courseMap" type="com.juaner.many2many.Course">
  6. <id property="id" column="cid"/>
  7. <result property="name" column="cname"/>
  8. </resultMap>
  9. <select id="findAllByName" parameterType="string" resultMap="courseMap">
  10. SELECT s.sid,s.sname,c.cid,c.cname
  11. FROM studentc s,courses c,middles m
  12. WHERE s.sid = m.msid AND c.cid=m.mcid
  13. AND s.sname = #{name}
  14. </select>
  15. </mapper>

4.spring + mybatis + oracle开发

1)创建一个spring-mybaits-oracle javaweb工程

2)导入spring,mybatis,c3p0,oracle和mybatis提供的与spring整合的插件包

mysql的jar:
mysql-connector-java-5.1.7-bin.jar
oracle的jar:
ojdbc5.jar
c3p0的jar:
c3p0-0.9.1.2.jar
mybatis的jar:
asm-3.3.1.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
mybatis-3.1.1.jar
mybatis与spring整合的jar
【mybatis-spring-1.1.1.jar】
spring的ioc模块的jar:
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
commons-logging.jar
spring的aop模块的jar:
aopalliance.jar
aspectjweaver.jar
cglib-2.2.2.jar
org.springframework.aop-3.0.5.RELEASE.jar
spring的transaction模块的jar:
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.orm-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar

3)  创建emps数据库表

4)创建Emp.java类

5)创建EmpMapper.xml映射文件

6)创建mybatis.xml配置文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <mappers>
  6. <mapper resource="com/juaner/entity/EmpMapper.xml"/>
  7. </mappers>
  8. </configuration>

7)创建spring.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xmlns:mvc="http://www.springframework.org/schema/mvc"
  9. xsi:schemaLocation="
  10. http://www.springframework.org/schema/beans
  11. http://www.springframework.org/schema/beans/spring-beans.xsd
  12.  
  13. http://www.springframework.org/schema/context
  14. http://www.springframework.org/schema/context/spring-context.xsd
  15.  
  16. http://www.springframework.org/schema/aop
  17. http://www.springframework.org/schema/aop/spring-aop.xsd
  18.  
  19. http://www.springframework.org/schema/tx
  20. http://www.springframework.org/schema/tx/spring-tx.xsd
  21.  
  22. http://www.springframework.org/schema/mvc
  23. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  24. ">
  25. <!--配置c3p0连接池-->
  26. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  27. <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
  28. <property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
  29. <property name="user" value="scott"/>
  30. <property name="password" value="tiger"/>
  31. </bean>
  32. <!--加载mybatis配置文件和映射文件,即替代原来的mybatis工具类作用-->
  33. <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
  34. <property name="configLocation" value="classpath:mybatis.xml"/>
  35. <property name="dataSource" ref="dataSource"/>
  36. </bean>
  37.  
  38. <!--配置mybatis事务管理器,因为mybatis底层用的是jdbc事务管理器
  39. 所以在这里配置jdbc事务管理器-->
  40. <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  41. <property name="dataSource" ref="dataSource"/>
  42. </bean>
  43. <!--配置事务通知,即哪些方法需要事务支持-->
  44. <tx:advice id="tx" transaction-manager="txManager">
  45. <tx:attributes>
  46. <tx:method name="add*" propagation="REQUIRED"/>
  47. <tx:method name="update*" propagation="REQUIRED"/>
  48. <tx:method name="delete*" propagation="REQUIRED"/>
  49. <tx:method name="*" propagation="SUPPORTS"/>
  50. </tx:attributes>
  51. </tx:advice>
  52.  
  53. <!--配置事务切面,即哪些包下的类需要事务支持-->
  54. <aop:config>
  55. <!--返回值不限 dao包下的所有类的所有方法,参数不限-->
  56. <aop:pointcut id="pt" expression="execution(* com.juaner.dao.*.*(..))"/>
  57. <!--将事务切面和事务通知结合在一起-->
  58. <aop:advisor advice-ref="tx" pointcut-ref="pt"/>
  59. </aop:config>
  60.  
  61. <!--注册empdao-->
  62. <bean id="empDao" class="com.juaner.dao.EmpDao">
  63. <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
  64. </bean>
  65. </beans>

8)创建EmpDao.java类

  1. public class EmpDao {
  2. //自动注入
  3. private SqlSessionFactory sqlSessionFactory;
  4.  
  5. public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
  6. this.sqlSessionFactory = sqlSessionFactory;
  7. }
  8.  
  9. public void add(Emp emp)throws Exception{
  10. SqlSession sqlSession = sqlSessionFactory.openSession();
  11. sqlSession.insert(Emp.class.getName()+".add",emp);
  12. // int i = 1/0;
  13. sqlSession.close();
  14. }
  15. }

9)测试

  1. public class TestEmpDao {
  2. @Test
  3. public void test()throws Exception{
  4. EmpDao empDao = new EmpDao();
  5. empDao.add(new Emp(1,"m",6000d,"小明"));
  6.  
  7. }
  8. //测试spring整合mybatis
  9. @Test
  10. public void test2()throws Exception{
  11. ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
  12. EmpDao empDao = (EmpDao) ac.getBean("empDao");
  13. empDao.add(new Emp(2,"f",7000d,"小红"));
  14. }
  15. }

mybatis进阶的更多相关文章

  1. mybatis进阶案例之多表查询

    mybatis进阶案例之多表查询 一.mybatis中表之间的关系 在数据库中,实体型之间的关系主要有如下几种: 1.一对一 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之 ...

  2. 《Mybatis进阶》肝了30天专栏文章,整理成册,免费获取!!!

    持续原创输出,点击上方蓝字关注我吧 目录 前言 简介 如何获取? 总结 前言 Mybatis专栏文章写到至今已经有一个月了,从基础到源码详细的介绍了每个知识点,没什么多余的废话,全是工作.面试中常用到 ...

  3. mybatis进阶--一对一查询

    所谓的一对一查询,就是说我们在查询一个表的数据的时候,需要关联查询其他表的数据. 需求 首先说一个使用一对一查询的小需求吧:假设我们在查询某一个订单的信息的时候,需要关联查询出创建这个订单对应的用户信 ...

  4. MyBatis进阶(一)运行原理

    初次学习MyBatis,自己花了不少时间,理解一件事物是需要时间的.经过多次反复的理解,你的认知能力就可以得到提升.以下是学习MyBatis的一些理解认识,技术理解上若有不当之处,敬请朋友们提出宝贵意 ...

  5. MyBatis进阶使用——动态SQL

    MyBatis的强大特性之一就是它的动态SQL.如果你有使用JDBC或者其他类似框架的经验,你一定会体会到根据不同条件拼接SQL语句的痛苦.然而利用动态SQL这一特性可以彻底摆脱这一痛苦 MyBati ...

  6. MyBatis进阶(三)

    MyBatis批量新增数据 1. 传统的JDBC批量插入数据 使用for循环 创建连接 获取连接 创建sql语句,交给连接 使用for循环新增数据 提交连接 使用批处理 两者都存在严重的效率问题,代码 ...

  7. MyBatis进阶(二)

    MyBatis之动态SQL 动态SQL之foreach 有时SQL语句where条件是在一个集合或者数组里,需要使用in关键字,这时可以使用foreach动态SQL语句,例如: select * fr ...

  8. MyBatis进阶(一)

    MyBatis参数传递 1. MyBatis单参数传递 单参数传递不做特殊处理,直接取出参数值赋给xml文件,如#{id} 2. MyBatis多参数传递 多参数传递默认使用{arg1, arg0, ...

  9. mybatis进阶--一对多查询

    首先,我们还是先给出一个需求:根据订单id查询订单明细——我们知道,一个订单里面可以有多个订单的明细(需求不明确的同学,请留言或者去淘宝网上的订单处点一下就知道了).这个时候,一个订单,对应多个订单的 ...

随机推荐

  1. 【笔记】after,before,insertAfter,insertBefore的作用

    这几个方法的作用是插入外部节点,所谓外部插入节点就是我们平常在网页编程中手动添加代码到某一句语句的前面或后面,如图: 红色框的P是在蓝色框span的前面插入的外部节点,反过来说蓝色框的span是在红色 ...

  2. Excel 统计在某个区间内数值的个数

    =COUNTIF(A1:A50,"<=1.0E-5")-COUNTIF(A1:A50,"<60")

  3. wex5 教程 之 图文讲解 后台管理界面设计与技巧

    视频教程地址:http://v.youku.com/v_show/id_XMTgwOTAyMTkyMA==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 ...

  4. asp.net 之

    <script type="text/javascript"> //获取客户端实例 var pa = Sys.WebForms.PageRequestManager.g ...

  5. Android知识散点

    1.所有活动都需要在AndroidMainfest.xml中注册后才能生效. <activity android:name=".MainActivity" android:l ...

  6. 用JavaBean实现数据库的连接和关闭,在jsp页面输出数据库中student表中学生的信息

    package com.hanqi.test; import java.sql.*; public class XveSheng { Connection conn; Statement st; Re ...

  7. 模拟jquery

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Cheatsheet: 2016 02.01 ~ 02.29

    Web How to do distributed locking Writing Next Generation Reusable JavaScript Modules in ECMAScript ...

  9. Linux下内存占用和CPU占用的计算

    ->使用free命令查看内存使用情况: 1.echo 3 > /proc/sys/vm/drop_caches 2.free 或者使用cat /proc/yourpid/status 来查 ...

  10. 《BI那点儿事》数据流转换——OLE DB 命令转换

    OLE DB命令对数据流中的数据行执行一个OLE DB命令.它针对数据表中的每一行进行更新操作,可以事先将要更新的数据存放在表中.或者针对一个有输入参数的存储过程,可以将这些参数存放在一个数据表中,不 ...