什么是Mybatis
MyBatis 是一款开源的优秀持久层框架面,向配置编程,SQL语句与代码分离,方便维护,良好支持数据映射,结果处理方便,支持动态SQL语句
动态生成SQL语句
if标签
if标签可以根据条件来判断是否包含某个SQL语句的片段
例如:
<select id="findUsersByAge" parameterType="Map" resultType="User">
SELECT * FROM user WHERE 1 = 1
<if test="minAge != null">
AND age >= #{minAge}
</if>
<if test="maxAge != null">
AND age <= #{maxAge}
</if>
</select>
以上代码中,<if>元素用于判断minAge和maxAge是否为null,如果不为null,则将对应的SQL语句片段拼接到最终的SQL语句中。
where标签
<where>可以用于动态生成WHERE子句,如果所有条件均为null,则不会生成WHERE子句。
例如:
<select id="findUserByUsernameAndPassword" parameterType="Map" resultType="User">
SELECT * FROM user
<where>
<if test="username != null">
AND username = #{username}
</if>
<if test="password != null">
AND password = #{password}
</if>
</where>
</select>
<where>用于动态生成WHERE子句,如果username和password均为null,则不会生成WHERE子句.where标签还可以自动省略AND
foreach元素
foreach元素可以用于循环遍历一个集合,并将集合中的元素拼接到SQL语句中。
例如:
<select id="findUsersByIds" parameterType="List" resultType="User">
SELECT * FROM user WHERE id IN
<foreachcollection="list" item="id" open="("separator=","close=")">
#{id}
</foreach>
</select>
<foreach>用于循环遍历List类型的参数,并将集合中的元素拼接到SQL语句中。
数据库自动生成ID
<insert id="save"parameterType="User" useGeneratedKeys="true" keyProperty="id"> INSERT INTO user(username, password, age) VALUES (#{username}, #{password}, #{age})</insert>
通过useGeneratedKeys="true"参数告诉MyBatis要求数据库生成主键,并通过keyProperty="id"参数指定了主键的属性名。这样,当执行插入操作后,主键值将自动赋值到User对象的id属性中。
如何在springboot中使用mybatis
在pom.xml中导入依赖
在applicati.yml中配置数据库连接
在启动类的同级目录下创建mapper包,然后创建对应的mapper类
在mapper类上加入@Mapper注解