当前位置:首页 » 编程语言 » mybatis的sql映射文件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mybatis的sql映射文件

发布时间: 2022-06-06 09:44:56

1. 如何编写Java的MyBatis框架中sql语句映射部分

1..增删改查、参数、缓存

1.1 select 举例如下:
查询学员信息,一个String参数,参数标识为#{studentID},并返回一个StudentEntity类型的对象

<select id="getStudent" parameterType="String" resultMap="studentResultMap">
SELECT ST.STUDENT_ID,
ST.STUDENT_NAME,
ST.STUDENT_SEX,
ST.STUDENT_BIRTHDAY,
ST.CLASS_ID
FROM STUDENT_TBL ST
WHERE ST.STUDENT_ID = #{studentID}
</select>

1.2 insert 举例如下:
插入数据,一个String参数,参数标识为#{studentID},并返回一个StudentEntity类型的对象。

<insert id="insertStudent" parameterType="StudentEntity">
INSERT INTO STUDENT_TBL (STUDENT_ID,
STUDENT_NAME,
STUDENT_SEX,
STUDENT_BIRTHDAY,
CLASS_ID)
VALUES (#{studentID},
#{studentName},
#{studentSex},
#{studentBirthday},
#{classEntity.classID})
</insert>
1.3 update 举例如下:
更新学员信息

<update id="updateStudent" parameterType="StudentEntity">
UPDATE STUDENT_TBL
SET STUDENT_TBL.STUDENT_NAME = #{studentName},
STUDENT_TBL.STUDENT_SEX = #{studentSex},
STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},
STUDENT_TBL.CLASS_ID = #{classEntity.classID}
WHERE STUDENT_TBL.STUDENT_ID = #{studentID};
</update>

1.4 delete 举例如下:
删除学员信息:

<delete id="deleteStudent" parameterType="StudentEntity">
DELETE FROM STUDENT_TBL WHERE STUDENT_ID = #{studentID}
</delete>

2.ResultMap
SQL映射xml文件是为了放置所有sql语句,需要定义一个workspace,正常是接口类的路径。SQL语句映射文件写好后,需要在MyBatis配置文件mappers标签中引用。

举例如下:

<mappers>
<mapper resource="cn/te/ninixie/manager/data/mappers/UserMapper.xml" />
<mapper resource="cn/te/ninixie/manager/data/mappers/StudentMapper.xml" />
<mapper resource="cn/te/ninixie/manager/data/mappers/ClassMapper.xml" />
<mapper resource="cn/te/ninixie/manager/data/mappers/TeacherMapper.xml" />
</mappers>
当Java接口与xml文件在一个相对路径下,那么MyBaits配置文件的napper中可以不用声明。

ResultMaps的作用,就是简单的语句而不需要多余的结果映射,更多复杂的语句,除了只要一些绝对必须的语句描述关系以外,就不需要其它的了。
resultMap属性:type为java实体类;id为此resultMap的标识。

resultMap可以设置的映射:
2.1 constructor:用来将结果发射给一个实例化好的类的构造器
idArg_ID 参数:将结果集标记为ID,为了方便全局调用
arg –反射到构造器的通常结果

2.2 id结果,将结果集标记为ID,为了方便全局调用
2.3 result:反射到JavaBean的普通结果

2.4 association:复杂类型的结合,多个结果合成的类型
2.5 collection:复杂类型结合

2.6 resultMap的集合,也可以引用到其他
2.7 discriminator:使用一个结果值为了决定使用哪个结果集。

2. mybatis的sql映射文件可以放在什么包里

mapper包里,和对应的mapper接口放一起

3. MyBatis sql映射文件疑问

其实没有什么区别,只不过是取值的方式不一样罢了,
<resultMap id="wpResult" class="wp">

</resultMap>
配了一次就可以反复用,
Alias 需要在查询语句里一个一个的as,你不觉得麻烦也可以用。
Alias最大的作用是联表查询的时候返回多个相同ID的时候可以改下名。不致于冲突报错

4. MyBatis之SQL语句映射文件增删改查和Java参数如何对应

insert可以使用数据库支持的自动生成主键策略,设置useGeneratedKeys=”true”,然后把keyProperty 设成对应的列,就搞定了。
比如说上面的StudentEntity 使用auto-generated 为id 列生成主键.
还可以使用selectKey元素。
使用mysql数据库nextval('student')为自定义函数,用来生成一个key。

5. mybatis原理

MyBatis 的工作原理:读取 MyBatis 配置文件、加载映射文件、构造会话工厂、创建会话对象、Executor 执行器、输入参数映射、输出结果映射。


mybatis原理具体介绍如下:


1、读取 MyBatis 配置文件:


mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。


2、加载映射文件:


映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。


3、构造会话工厂:

通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。


4、创建会话对象:

由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。


5、Executor 执行器:


MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。



8、输出结果映射:


输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

6. mybatis是如何将sql执行结果封装为目标对象并返回的都有哪些映射形式

是写一个resultmap然后指明字段和属性映射关系就行