新手入门教程之Mybatis

什么是Mybatis

MyBatis是一个持久层框架,它支持SQL、存储过程和映射。是一种半自动化的ORM框架,为什么叫半自动,Mybatis的参数是动态映射,但是其SQL语句是需要我们自己去编写的。

Mybatis在idea中的配置

导入依赖jar包
Mysql driver
Mybatis
核心配置:
在idea的setting窗口中选择
在这里插入图片描述
如果没有user,点击+新建
新建一个mbcnf在Template text:中输入:

<?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>
</configuration>

在这里插入图片描述
新建一个mbmapper,输入:

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>
</mapper>

在这里插入图片描述
然后再Mybatis.xml里配置文件,在此之前,需要在我们的maven quickstart工程目录下新建资源包resources,在资源包中新建配置文件datasource.properties和mybatis.xml(这里以我自己的idea为例)
在mybatis.xml中导入刚刚配置的mbcnf
entity是实体类包,其中是我们查询用的视图实体类,增删改用的数据表实体类
mapper是我们的mapper接口包,接口中是我们所用的方法,包括增删改查
在这里插入图片描述
在资源包resources下的mapper包中新建.xml文件,注意,此文件路径名须和mapper接口的外包名一致,文件名与mapper接口名一致如图:
然后我们在xml文件中导入mbmapper,可以开始编写SQL语句
在这里插入图片描述

Mapper配置文件中常用的标签

select id=”Mapper接口中方法名称” resultType=”返回自定义”/resultMap=””>...</select>
当数据库字段名称,类型和java实体类的属性名称类型不匹配时,用resultMap
<insert id="Mapper接口中的方法名称">...</insert>
<delete id="Mapper接口中的方法名称">...</delete >
<update id="Mapper接口中的方法名称">...</update >
<foreach collection="array/list/map" item="alias" open="开始标志"seprator="分隔符" close="结束标志"></foreach>
<where></where>去掉第一个and,以where代替
<set></set>去掉最后一个 ,
<if test"null != field">...</if>条件判断

Mybatis核心对象

1、配置文件解析

InputStream config = Resources.getResourceAsStream(String path);

2、SQL会话工厂

SqlSessionFactory factory = new SqlSessionFactoryBuikder().build(config);

3、SQL会话

SqlSession session = factory.openSession(true);

4、获取Mapper接口对象

XxxMapper mapper = session.getMapper(XxxMapper.class);

5、调用接口对象的方法,处理返回结果

注解Mapper

直接在mapper接口中的对应方法上加对应的SQL语句,用于简单的SQL命令

@Select(“SQL COMMAND”)
@Insert(“SQL COMMAND”)
@Update(“SQL COMMAND”)
@Delete(“SQL COMMAND”)

注意在带有两个及以上参数的增加方法中,需要在参数前加注解,如:

@Insert("insert into subjectinfo (proId,subName,classHours) values(#{proId},#{subName},#{classHours})")
int addSubject(@Param("proId")int proId, @Param("subName")String subName,@Param("classHours")int classHours);

单个参数也是不识别的,只是因为方法中只需要一个参数,又只解析了一个参数,所以不需要添加注解。

猜你喜欢

转载自blog.csdn.net/weixin_44147632/article/details/107698658