MyEclipse下用Mybatis框架搭建工程并实现条件的增删查改及结果映射

花了两天时间搞MyEclipse搭建MyBatis开发环境,主要涉及对MyBatis的核心对象的掌握,以及配置文件(配置文件结构以及如何引入DTD文件);对SQL映射文件的学习,主要学习了以下的任务:1.实现条件查询(SQL映射文件、单条件查询、多条件查询、自定义查询结果映射)2.实现增删改操作(增加操作、修改操作、多参数入参操作、删除操作)3.实现高级结果映射(resultMap的配置、使用association处理一对一关联关系、使用collecion处理一对多关联关系)4.配置resultMap自动映射级别和MyBatis缓存(缓存暂时作为了解性学习,此处不深究)。以下的代码全都是按照这个步骤来实现的,有详细的注解。在学完这些基础之后可以再用动态SQL进行进一步的优化改造。至于mybatis的理论知识只有自己去补充学习,这里不做说明。

搭建MyBatis开发环境

使用MyBatis的开发步骤:
1.下载mybatis-3.2.2.jar包并导入工程
2.编写MyBatis核心配置文件(configguration.xml)
3.创建实体类-POJO
4.DAO层-SQL映射文件(mapper.xml)
5.创建测试类
(1)读取核心配置文件mybatis-config.xml
(2)创建SqlSessionFactory对象,读取配置文件
(3)创建SqlSession对象
(4)调用mapper文件进行数据操作

resultType:直接表示返回类型
* 基础数据类型
* 复杂数据类型
resultMap:对外部resultMap的引用
* 应用场景:
1. 数据库字段信息与对象属性不一致
2. 复杂的联合查询,自由控制映射结果
注意:二者不能同时存在,本质上都是Map数据结构
resultMap:
数据结构:map
属性:id 、 type
子节点:result--------->(property、column)


思考问题:使用resultMap如何实现自由灵活的控制映射结果,从而达到只对关心的属性进行复制填充?
resultMap自动映射匹配前提:字段名与属性名一致
rwsultMap的自动映射级别(autoMappingBehavior):
NONE:禁止自动匹配。
PARTIAL(默认):自动匹配所有属性,有内部嵌套(association、cellection)的除外。
FULL:自动匹配所有属性。


数据库结构:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
工程文件结构:
在这里插入图片描述
在这里插入图片描述
代码中关于说明都有详细注解,不再一一赘述。
database.properties配置文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms
username=root
password=123456

log4j.properties日志配置文件:

log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.smbms.dao=debug
log4j.logger.com.ibatis=debug 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
log4j.logger.java.sql.Connection=debug 
log4j.logger.java.sql.Statement=debug 
log4j.logger.java.sql.PreparedStatement=debug 
log4j.logger.java.sql.ResultSet=debug 
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
######################################################################################
# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
######################################################################################
# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
log4j.logger.com.opensymphony.xwork2=error  

mybatis-config.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>
	<!--引入database.properties文件 -->
	<!-- <properties resource="database.properties" /> -->
	<!--resource属性值的优先级高于property子节点配置的值 -->
	<properties resource="database.properties">
		<property name="driver" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://localhost:3306/smbms" />
		<property name="username" value="root" />
		<property name="password" value="123456" />
	</properties>

	<settings>
		<!--配置mybatis的log实现为LOG4J -->
		<setting name="logImpl" value="LOG4J" />
		<!--设置resultMap的自动映射级别,NONE(禁止自动匹配),PARTIAL(默认)自动匹配所有属性,有内部嵌套(association、collection)的除外,FULL(自动匹配所有属性) -->
		<setting name="autoMappingBehavior" value="FULL" />
	</settings>

	<!--typeAliases元素配置类型别名,给实体类取别名,方便在mapper配置文件中的使用(起简化作用) -->
	<typeAliases>
		<!-- <typeAlias alias="user" type="com.smbms.pojo.User" /> -->
		<!--package属性会根据name的包名自动扫描JavaBean的类名,更加简化了使用typeAlias属性配置实体类的别名 -->
		<package name="com.smbms.pojo" />
	</typeAliases>

	<!--配置mybatis多套运行环境 -->
	<environments default="development">
		<environment id="development">
			<!--配置事务管理,采用JDBC的事务管理 -->
			<transactionManager type="JDBC"></transactionManager>
			<!--POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property nam
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值