/* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50519 Source Host : localhost:3306 Source Database : mybatis Target Server Type : MYSQL Target Server Version : 50519 File Encoding : 65001 Date: 2014-02-20 14:25:02 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `customer` -- ---------------------------- DROP TABLE IF EXISTS `customer`; CREATE TABLE `customer` ( `sysNo` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(100) DEFAULT NULL, `userpass` varchar(50) DEFAULT NULL, PRIMARY KEY (`sysNo`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=gbk; -- ---------------------------- -- Records of customer -- ---------------------------- INSERT INTO `customer` VALUES ('1', 'immigrant', '000000'); INSERT INTO `customer` VALUES ('2', 'yiminghu', '000000'); INSERT INTO `customer` VALUES ('3', '王五', '000000'); INSERT INTO `customer` VALUES ('8', 'yiminghu', '000000'); -- ---------------------------- -- Table structure for `message` -- ---------------------------- DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `SysNo` int(11) NOT NULL AUTO_INCREMENT, `CustomerSysNo` int(11) DEFAULT NULL, `FullName` varchar(255) DEFAULT NULL, `Mobile` varchar(11) DEFAULT NULL, PRIMARY KEY (`SysNo`), KEY `CustomerSysNo` (`CustomerSysNo`), CONSTRAINT `message_ibfk_1` FOREIGN KEY (`CustomerSysNo`) REFERENCES `customer` (`sysNo`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk; -- ---------------------------- -- Records of message -- ---------------------------- INSERT INTO `message` VALUES ('1', '1', '张三', '15015000000');
package com.model; import java.util.List; public class Customer { private Integer sysNo; private String username; private String userpass; private List<Message> messageList; public List<Message> getMessageList() { return messageList; } public void setMessageList(List<Message> messageList) { this.messageList = messageList; } public Integer getSysNo() { return sysNo; } public void setSysNo(Integer sysNo) { this.sysNo = sysNo; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserpass() { return userpass; } public void setUserpass(String userpass) { this.userpass = userpass; } } package com.model; public class Message { private Integer sysNo; private Integer customerSysNo; private String fullName; private String mobile; private Customer customer; public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public Integer getSysNo() { return sysNo; } public void setSysNo(Integer sysNo) { this.sysNo = sysNo; } public Integer getCustomerSysNo() { return customerSysNo; } public void setCustomerSysNo(Integer customerSysNo) { this.customerSysNo = customerSysNo; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } }
<?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"> <mapper namespace="com.model.Customer"> <select id="Get" parameterType="int" resultType="Customer"> select * from customer where sysNo = #{sysNO} </select> <select id="seach" resultType="Customer"> select * from customer </select> <insert id="Insert" parameterType="Customer"> insert into Customer (username,userpass) value (#{username},#{userpass}) </insert> <update id="update" parameterType="Customer"> update customer set username=#{username},userpass=#{userpass} where sysNO=#{sysNo} </update> <delete id="delete" parameterType="int"> delete from customer where sysNo=#{sysNo} </delete> <!-- 一对多 --> <resultMap type="Customer" id="resultMapCustomerleftJoinMessage"> <id property="sysNo" column="sysNo" /> <result property="username" column="username" /> <result property="userpass" column="userpass" /> <collection property="messageList" ofType="Message" column="CustomerSysNo"> <id property="sysNo" column="sysNo" /> <result property="fullName" column="fullName" /> <result property="mobile" column="mobile" /> </collection> </resultMap> <select id="Seach" parameterType="int" resultMap="resultMapCustomerleftJoinMessage"> select c.*,m.fullName,m.mobile from customer c left join message m on c.sysno=m.customersysno where m.sysno = #{sysno} </select> </mapper> <?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"> <mapper namespace="com.model.Message"> <select id="Get" parameterType="int" resultType="Message"> select * from Message where sysNo = #{sysNO} </select> <!-- 多对一 --> <resultMap type="Message" id="resultMapMessageleftJoinCustomer"> <id property="sysNo" column="sysNo" /> <result property="fullName" column="fullName" /> <result property="mobile" column="mobile" /> <association property="customer" javaType="Customer"> <id property="sysNo" column="sysNo" /> <result property="username" column="username" /> </association> </resultMap> <select id="Seach" parameterType="int" resultMap="resultMapMessageleftJoinCustomer"> select m.*,c.username from message m left join customer c on m.customersysno=c.sysno where m.sysno = #{sysno} </select> </mapper>
package com.util; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private static SqlSessionFactory factory; static { try { InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); factory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { e.printStackTrace(); } } /** * 创建 * @return */ public static SqlSession createSession() { return factory.openSession(); } /** * 关闭 * @param session */ public static void closeSession(SqlSession session) { if(session!=null){ session.close(); } } }
相关推荐
5. **插件机制**:MyBatis的插件机制允许我们在不影响源代码的情况下,对Executor、StatementHandler、ParameterHandler和ResultSetHandler这四个接口的代理对象进行拦截,实现AOP式的增强功能,如性能监控、日志...
这有助于开发者理解如何在实际项目中实现1对多和多对多的关系映射,如何编写和调用SQL查询,以及如何在Java代码中使用MyBatis的API来处理这些关系。 通过这个项目,你可以学习到如何在MyBatis中有效地处理1对多和多...
**1.2 一对多映射** **需求**: 查询订单信息,并关联查询订单明细信息。 **SQL 示例**: ```sql SELECT orders.id AS orderId, orders.user_id AS userId, orders.number AS orderNumber, user.username AS ...
本文将基于“Mybatis学习源代码”这一主题,深入探讨Mybatis的基本概念、核心功能以及如何通过狂神说的视频教程进行学习。 Mybatis是一个基于Java的持久层框架,它提供了一个SQL映射框架,可以将SQL语句与Java代码...
Spring Boot结合MyBatis框架提供了一种优雅的方式来处理多数据源的配置和切换,以满足不同业务需求。本文将深入探讨如何使用Spring Boot与MyBatis实现多数据源的示例。 1. **Spring Boot简介** Spring Boot是...
5. **结果映射**:MyBatis支持自动映射结果集到Java对象,同时也允许自定义映射规则,以处理复杂的数据结构和一对多、多对一的关系映射。 6. **缓存机制**:MyBatis内置了本地缓存和二级缓存机制,可以有效提高查询...
9. **嵌套查询与关联映射**:`MyBatis-03-Nesting`可能涵盖了多表联查或嵌套查询的示例,例如通过一对一、一对多或多对多的关系映射,将关联的数据一起加载。 10. **测试**:编写JUnit或其他测试框架的测试用例,...
5. **结果映射(ResultMap)**:在映射文件中,使用`<resultMap>`定义复杂的结果映射,处理一对一、一对多、多对多等关联关系。 6. **参数映射(Parameter Mapping)**:Mybatis允许使用`#{}`语法进行参数绑定,...
此外,Mybatis还支持ResultMap,允许自定义复杂的结果映射,处理一对一、一对多、多对多等复杂的关联关系。 总的来说,这个资源包提供了一个完整的Mybatis应用示例,涵盖了从实体类到数据库操作的整个流程,对于...
它可以是简单的类型,也可以是复杂的嵌套结构,包括一对一、一对多和多对多关系。 9. **缓存机制**:MyBatis 内置了两级缓存,一级缓存是 SqlSession 级别的,二级缓存是 Mapper 级别的。合理利用缓存可以显著提高...
它可以处理一对一、一对多、多对一等复杂关系的映射。 7. **事务管理** MyBatis 支持手动和自动两种事务管理模式。在 Spring 框架中,通常结合 MyBatis-Spring,利用 Spring 的事务管理功能,实现事务的统一管理...
3.4.5版本中,结果映射的处理更加智能,对于多对一、一对一、一对多等关联关系的处理更加完善。 5. **参数映射**:MyBatis通过`@Param`注解和`#{}`占位符实现了参数的映射。参数可以是单个值、Map、JavaBean或集合...
本示例"mybatis3_spring3整合"正是针对这一主题,通过使用MyBatis 3.0.2和Spring 3.0.4版本来展示如何实现两者的无缝集成,并且重点讲解了如何配置MyBatis中的一对一和一对多的关系映射。 首先,MyBatis是一个优秀...
4. 多数据源支持:通过DataSourceProxy实现对多个数据库的透明切换。 在实际项目中,这个组合可能还包括以下技术: - 使用Spring Cloud Config进行配置中心管理。 - 使用Spring Security或OAuth2进行权限控制。 - ...
- `src`:源代码目录,通常包含Java代码和资源文件。 - `out`:可能是IDE生成的编译输出目录。 - `build`:Gradle的构建输出目录,包含了编译后的类文件、资源文件和最终的打包文件。 综上所述,这个项目通过...
Mybatis 是一款流行的Java持久层框架,用于简化数据库操作。这个资源"Mybatis开发实战讲解(源代码)...在源代码中,你可以找到具体的示例和应用场景,这将加深对Mybatis的理解,并有助于你在实际项目中应用这些知识。
总的来说,MyBatis-3.1.1.jar和mybatis-3.1.1-sources.jar提供了完整的MyBatis框架运行环境和源代码,可以帮助开发者更高效地进行数据库操作,并通过源码学习到更多关于MyBatis的底层实现细节。
在MyBatis中,一对多和多对一的关系映射是数据库设计中常见的实体关系,它们在实际项目中被广泛运用。MyBatis通过映射配置文件或注解方式,帮助开发者实现这些复杂的关联查询。下面我们将详细探讨这两个概念以及如何...
同时,通过resultMap元素可以进行复杂的结果集映射,包括一对一、一对多、多对多关系的处理。 6. **注解方式使用MyBatis**:除了XML配置,MyBatis也支持在Mapper接口方法上直接使用注解来编写SQL,简化配置。 7. *...