关注公众号:”奇叔码技术“
回复:“java面试题大全”或者“java面试题”
即可免费领取资料
Mybatis自我心得、框架介绍、配置文件介绍、Dao层搭建、重点(企业用法)
1、自我学习完之后的感悟:
- 自我学习完之后的感悟:
有人会问为什么要学Mybatis框架;学习了之后的理解:Mybatis是一个半自动化的持久化框架,方便前后端分离,耦合性较低,代码重复率小,是企业常用的一类;后面学习完之后,不用像jdbc连接数据库,一样,先驱动,连接,事务,数据库操作,连接池等连着写,然后再后面每一次调用数据需要重新写一个数据库操作;而相比mybatis优化的是,在Dao层搭建完成之后,它只需你书写四个一(基本操作):一个调用方法、一个返回值、一个sql语句、一个测试打印;
2、Mybatis框架介绍:
- Mybatis框架介绍:
(1)半自动化的持久化框架(关键词一个专注业务,一个专注数据):
(2)听了众多视频,笔者目前已知学习后端:一门语言(java等),SSM:SpringMvc spring mybatis(下面图片详细介绍)
(3)带着疑问看下文(带着做大项目的心来看):
3.1:怎么解决:连接,预编译,结果集,关闭的紧凑性;
3.2:怎么解决:sql语句写在java代码中太拥挤,如果出现错误了,不好找和维护;
3.3:怎么解决:预编译,处理sql语句时,传递的参数写法变简便;
3.4:怎么解决:在解析结果集时,返回的数据我们需要设置给每一个字段,把这个操作,系统能不能自动进行这个操作呢?
3、配置文件的介绍
- 配置文件的介绍
(1)代码展示:
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/> <!--transactionManager 事务管理 JDBC-->
<dataSource type="POOLED">
<!--这里就是数据库驱动的写法配置,默认POOLED,IDER的默认连接池-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers> <!--mapper 映射器 作用,一般写sql语句-->
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<mapper resource="com/jiqi/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
(2)单词总集:configuration(配置),environments(环境),transactionManager(事务管理器),dataSource(数据源),property(属性),mappers(映射),resource(资源)
(3)代码解析:
3.1:<environments default="development">
environments 明显是一个复数,所以,他是爸爸,它可以包含多个儿子environment
标签,而default
就是说明准备用哪个儿子,而每一个儿子environment
标签,都会有一个熟悉名字id
,default
和id
的值一一对应,则就是使用哪个儿子environment
标签;
3.2: <transactionManager type="JDBC"/>
属性type
值为JDBC,意思也是显而易见,代表这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从dataSource
标签(数据源)得到的连接来管理事务范围。(此处摘录于:零星一点)transactionManager 以及datasource type解析
3.3<dataSource type="POOLED">
dataSource
标签包含的这里就是数据库驱动和连接的写法配置,默认属性:POOLED:IDER的默认连接池
3.4<property name="driver"value="com.mysql.jdbc.Driver"/>
书写数据库驱动和连接:name和value值一一对应;
3.5
<mappers>
<mapper resource="com/jiqi/mapper/StudentMapper.xml"/>
</mappers>
mapper:映射器的作用,一般写sql语句,而这里为了主配置文件和每一个小项目的配置文件分开写,方便查找和增加可读性、辨别性;特别注意
而这里的resource
属性就是我们使用子mapper文件的相对路径;
下面的代码即:StudentMapper.xml;
<?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来做区分
不同的mapper映射文件所使用的namespace的命名不允许重复
使用namespace: 命名空间:.sqlid的形式来找到我们写好的sql语句来执行;
test1.selectBlog
-->
<mapper namespace="test1">
<!--<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>-->
<!--
sql语句必须写在相应的b标签当中;
<insert>:在标签当中写insert开头的语句 处理添加操作
<update>:在标签当中写insert开头的语句 处理更新操作
<delete>:在标签当中写insert开头的语句 处理操作
<select>:在标签当中写insert开头的语句 处理添加操作
parameterType : 为sql语句传递的参数类型
resultType: 以前是结果集,然后放在类的set方法里面;
现在直接就是返回给类 Student s = resultType(必须绝对路径)
#{id}->"id" 字符串写法
-->
<select id="getById" parameterType="java.lang.String" resultType="com.Student">
select * from tbl_student where id = #{id}
</select>
<select id="getAll" resultType="com.Student">
select * from tbl_student
</select>
<insert id="insert" parameterType="java.lang.Object" >
insert into tbl_student(#{id},#{name},#{age}) values(#{id},#{name},#{age})
</insert>
</mapper>
4、重点(企业用法):
- 重点(企业用法):
<?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>
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.Driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--用package 的name属性来批量处理我们的mapper映射,使mapper映射文件自动注册-->
<!--<mapper resource="com/jiqi/Dao/StudentDao.xml"/>-->
<package name="com.jiqi.Dao"></package>
</mappers>
</configuration>
4.1<properties resource="db.properties"/>
的用法:
文件解析:这是一个属性文件:文件后缀名:properties;
jdbc.Driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/Mybatis
jdbc.username=root
jdbc.password=123456
目的直接对应于:
<property name="driver" value="${jdbc.Driver}"/>
里面的value值,用el(表达式语言的写法);
4.2:mapper中批量处理mapper映射,自动注册;
<mappers>
<!--用package 的name属性来批量处理我们的mapper映射,使mapper映射文件自动注册-->
<!--<mapper resource="com/jiqi/Dao/StudentDao.xml"/>-->
<package name="com.jiqi.Dao"></package>
</mappers>
用package
是为了方便在Dao包下面所有的mapper映射文件都可以自己自动注册;不用分开写了;
以上总结,当采纳和对你有帮助时;
🤞👣👀👇🤝🙌🍗
留下你的点赞足迹+你爱心的评论哦!
🉐(⓿_⓿)谢啦!!☆⌒(*^-゜)v