前言:在SpringBoot集成Mybatis(一)中已经实现了注解方式和xml方式的单表查询,本章节新增通过注解的方式对单表进行修改,删除和新增。通过xml的方式对多表进行关联查询,并且返回的数据为实体类型 码云地址:gitee.com/fengayang/m…
下面两段代码为mapper.java文件和对应的xml文件,这两个文件需要关联着看
1、mapper代码
package com.jian.myspringboot.demo.dao;
import com.jian.myspringboot.demo.model.UserInfo;
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface UserInfoMapper {
/* *********************** TODO 注解方式操作数据库 start*******************/
/**
* 按照id查询用户
* @param id 用户id
* @return 单个用户信息
*/
@Select("select * from user_info where id= #{id}")
UserInfo queryUserById(@Param("id") Long id);
/**
* 新增用户信息,并返回新增数据id
* @param userInfo 用户信息
*/
@Insert("insert into user_info(user_name) values(#{userName})")
@Options(useGeneratedKeys = true, keyProperty = "id")
Long insertUserInfo(UserInfo userInfo);
/**
* 批量新增用户信息,并返回新增数据id集合
* @param userInfos 用户实体集合
* @return 修改条数
*/
@Insert({"<script> insert into user_info(user_name) values " +
"<foreach collection='userInfos' item='item' separator=',' >" +
"(#{item.userName})" +
"</foreach> </script>"})
int insertBatchUserInfo(List<UserInfo> userInfos);
/**
* 修改业主信息数据
* @param userInfo 用户实体
* @return 修改条数
*/
@Update("update user_info set user_name=#{userName} where id=#{id}")
int updateUserInfo(UserInfo userInfo);
/**
* 批量修改
* @param userInfos 用户信息列表
* @return
*/
@Update({"<script>" +
"<foreach collection='userInfos' item='item' separator=';'>" +
" UPDATE user_info set user_name = #{item.userName}" +
" WHERE id = #{item.id}" +
"</foreach>" +
"</script>"})
int updateBatchUserInfo(List<UserInfo> userInfos);
/**
批量删除用户信息
@param userInfos
* @return
*/
@Delete({"<script>"+
"delete from user_info where id in " +
"<foreach collection='list' item='item' open='(' separator=',' close=')' > " +
"#{item.id}" +
"</foreach>" +
"</script>"})
int deleteBatchUserInfo(List<UserInfo> userInfos);
/* *********************** 注解方式操作数据库end*******************/
/* ****************************** TODO xml方式操作数据库start*******************************/
/**
* 查询所有用户
* @return 所有用户信息
*/
List<UserInfo> queryAllUser();
/**
* 查询用户信息和相关部门信息
* @return
*/
UserInfo queryUserInfoAndDepByUserId(@Param("id") Long id);
/* ******************************xml方式操作数据库end*******************************/
}
2、mapperXml文件代码
<?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 namespace="com.jian.myspringboot.demo.dao.UserInfoMapper">
<select id="queryAllUser" resultType="UserInfo">
select
*
from
user_info
</select>
<!--查询业主和部门信息-->
<!--定义查询的字段,查询出来的字段要保持唯一性,不然返回的数据会有问题-->
<sql id="user_dep_list">
user.id,user.user_name,dep.id ideId,dep.name depName,dep.tel depTel
</sql>
<select id="queryUserInfoAndDepByUserId" resultMap="UserInfoResultMap">
select <include refid="user_dep_list"/>
from user_info user
left join tbl_department dep on user.department_id = dep.id
where user.id = #{id}
</select>
<resultMap type="UserInfo" id="UserInfoResultMap">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<!--将关联表的数据转换为实体数据-->
<association property="department" javaType="Department">
<id property="id" column="ideId"/>
<result property="name" column="depName"/>
<result property="tel" column="depTel"/>
</association>
</resultMap>
</mapper>