Mybatis(Eclipse)

本文介绍了如何在Eclipse环境下使用Mybatis进行项目开发。首先,讲解了项目的结构和配置,包括SqlMapConfig.xml的配置、SqlSession的获取。接着,详细对比了原始DAO开发方法和mapper代理开发方法,包括创建XML映射文件、编写接口和实现类,并演示了如何通过SqlSession和Mapper接口进行数据库操作。此外,还提供了项目所需的依赖包链接和项目文件的目录结构。
摘要由CSDN通过智能技术生成

环境

eclipse:2019-06 (4.12.0)
jdk:1.8.0_172
mybatis:3.5.3
jdbc:8.0.16
数据库:mysql

项目结构

项目结构图

在这里插入图片描述

框架思路

一、在SqlMapConfig.xml中设置mybatis的相关配置
二、使用输入流InputStream获取SqlMapConfig.xml配置文件
三、将上述输入流传入SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂

原始DAO开发方法

四、创建Student.xml文件并在里面编写sql语句
五、编写StudentDao接口并编写StudentDaoImpl接口实现类
六、分别在每个方法实现时通过SqlSessionFactory获取SqlSession
七、在SqlSession的查询方法中传入Student.xml以调用该文件中的sql语句进行数据库操作

mapper代理开发方法

四、创建StudentMapper.xml文件并在里面编写sql语句
五、编写StudentMapper接口
六、通过SqlSessionFactory获取SqlSession
七、通过sqlSession.getMapper传入接口类获得接口对象
八、调用接口方法进行数据库操作

需要导入的包

在这里插入图片描述
链接:https://pan.baidu.com/s/1eaGKD9Hjeg1CgS0wvgcmtQ
提取码:nnts

项目文件

config(用于存放配置文件)

sqlmap(原始dao开发方法)

Student.xml(在实现时需要调用的sql语句)

<?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">
 	
 	<!-- 放置sql语句   -->
 	<!-- 使用select进行查询 -->
 	<!-- id:在使用mapper代理后为statement的id,SqlSession查询方法的第一个参数 -->
 	<!-- #{}:一个占位符 -->
 	<!-- parameterType:指定输入参数的类型 -->
 	<!-- #{id}中的id:输入的参数名称,如果是简单类型,参数名可以任意 -->
 	<!-- resultType:sql输出结果所映射的java对象 -->
 	<select id="findStudentById" parameterType="int" resultType="mybatis.test1.pojo.Student">
 		SELECT * FROM STUDENT WHERE id = #{value}
 	</select>
 	
 	<!-- 可能返回多条记录 -->
 	<!-- 返回多条记录时resultType依然为单条记录所映射的java对象 -->
 	<!-- ${}表示拼接sql串,将传入的参数不加任何修饰拼接在sql中 -->
 	<!-- ${}可能引起sql注入,如['%' or 1 = 1 or '%'],因此不建议使用 -->
 	<!-- ${}如果传入简单类型,${}中只能使用value -->
 	<select id="findStudentByName" parameterType="java.lang.String" resultType="mybatis.test1.pojo.Student">
 		SELECT * FROM student WHERE name LIKE '%${value}%'
 	</select>
 	
 	<!-- 使用insert进行插入添加 -->
 	<!-- parameterType:指定输入的参数类型为自定义的pojo类 -->
 	<!-- #{}中指定pojo的属性名,接收pojo对象的属性值,mybatis通过OGNL获取对象的属性值 -->
 	<insert id="insertStudent" parameterType="mybatis.test1.pojo.Student">
 		<!-- 自增主键 -->
 		<!-- 将插入数据的主键返回到pojo对象中 -->
 		<!-- SELECT LAST_INSERT_ID():得到刚insert进记录的主键,只适用于自增主键 -->
 		<!-- keyProperty:将查询到的主键值设置到parameterType对象中的哪个属性 -->
 		<!-- order:selectKey中语句相对于insert语句的执行顺序 -->
 		<!-- resultType:指定SELECT LAST_INSERT_ID()的结果类型 -->
 		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
 			SELECT LAST_INSERT_ID()
 		</selectKey>
 		<!-- 若不插入id属性则在pojo类中id属性需为空 -->
 		<!-- INSERT INTO student VALUE (#{name}, #{gender}, #{id_number}, #{class_id}, #{is_cancel}) -->
 		<!-- 非自增主键 -->
 		<!-- 使用MySQL的uuid()生成主键 -->
 		<!-- uuid()将主键设置到pojo对应属性中,然后在insert执行时在pojo中取出属性值 -->
 		
 		<!-- <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
 			SELECT uuid()
 		</selectKey> -->
 		INSERT INTO student VALUE (#{id}, #{name}, #{gender}, #{id_number}, #{class_id}, #{is_cancel})
 		
 	</insert>
 	
 	
 	<!-- 使用delete进行删除 -->
 	<delete id="deleteStudent" parameterType="int">
 		DELETE FROM student WHERE id = #{value}
 	</delete>
 	
 	
 	<!-- 使用update进行更新 -->
 	<!-- 需传入id以及更新信息 -->
 	<!-- parameterType:同时包括id和更新信息,id必须存在!! -->
 	<update id="updateStudent" parameterType="mybatis.test1.pojo.Student">
 		UPDATE student SET name = #{name}, gender = #{gender}, id_number = #{id_number}, is_cancel = #{is_cancel} WHERE id = #{id}
 	</update>
 	
 </mapper>

db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/[数据库名]?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc.username=[帐号]
jdbc.password=[密码]

log4j.properties

# Global logging configuration
#development:DEBUG;production:info or error
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<!-- 以下标签为固定顺序 -->

	<!-- 加载属性文件 -->
	<properties resource="db.properties"></properties>
	
	<!-- 设置mybatis的运行参数,全局参数会影响mybatis的运行行为 -->
	<!-- <settings></settings> -->
	
	<!-- 别名定义 -->
	<typeAliases>
		<!-- 针对单个别名定义 -->
		<!-- type:类型的全路径 -->
		<!-- alias:别名 -->
		<!-- <typeAlias type="mybatis.test1.pojo.Student" alias="student"/> -->
		<!-- 批量别名定义 -->
		<!-- mybaits会自动扫描包中的pojo类,自动定义别名,别名就是类名,首字母大写或小写 -->
		<package name="mybatis.test1.pojo"/>
	</typeAliases>
	
	<!-- 类型处理器,进行java类型和jdbc类型的映射 -->
	<!-- 一般自带的映射已经足够,不需要自定义 -->
	<!-- <typeHandlers></typeHandlers> -->

	<!-- 和spring整合后environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用JDBC事务管理 -->
		    <transactionManager type="JDBC">
		    <!-- 数据库连接池 -->
		    </transactionManager>
		    <dataSource type="POOLED">
		      	<property name="driver" value="${jdbc.driver}"/>
		      	<!-- url中的字符[&]需要用&amp;进行转义,在配置文件中则不需要 -->
		      	<!-- serverTimezone:设置数据库的时区 -->
		      	<property name="url" value="${jdbc.url}"/>
		      	<property name="username" value="${jdbc.username}"/>
		      	<property name="password" value="${jdbc.password}"/>
		    </dataSource>
		</environment>
	</environments>
	<!-- 映射配置(加载映射文件) -->
	<mappers>
	<!-- 通过resource一次加载一个映射文件 -->
		<!-- <mapper resource="mapper/StudentMapper.xml"/> -->
		<!-- 通过mapper接口加载映射文件 -->
		<!-- mapper接口的类名与mapper.xml类名一致,且在一个目录中(前提:使用mapper代理) -->
		<!-- <mapper class="mybatis.test1.mapper.StudentMapper"/> -->
		<!-- 批量加载mapper接口 -->
		<!-- 遵循上面通过mapper接口加载的规范 -->
		<pac
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值