注意点:对springboot版本要求2.0以下;本次用的是  1.5.6.RELEASE;否则会报错

一、创建项目

1、用idea创建项目

点击finish,创建完成

2、添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.luonan</groupId><artifactId>springboot-mybatis-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-mybatis-demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.RELEASE</version> <!-- 本次用的是  1.5.6.RELEASE;否则会报错 --><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- alibaba的druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.11</version></dependency><!-- 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.1.2</version></dependency><!-- alibaba的druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.0</version></dependency><!-- 读取project文件 --><dependency><groupId>net.sf.mpxj</groupId><artifactId>mpxj</artifactId><version>7.1.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- mybatis generator 自动生成代码插件 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration></plugin></plugins></build></project>

3、整体项目结构

4、修改application.properties为application.yml

server:port: 8080
spring:datasource:name: test#mysql的信息注意更改url: jdbc:mysql://127.0.0.1:3306/t_test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=trueusername: rootpassword: root# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverfilters: statmaxActive: 20initialSize: 1maxWait: 60000minIdle: 1timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: select 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: truemaxOpenPreparedStatements: 20mybatis:mapper-locations: classpath:mapping/*.xmltype-aliases-package: com.luonan.domain#pagehelper
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql#控制台显示查询语句
logging:level:com:luonan:mapper: debug

5、generatorConfig.xml自动生成代码配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--><classPathEntry  location="E:/Users/Administrator/.m2/mybatisdemo/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/><context id="DB2Tables"  targetRuntime="MyBatis3"><commentGenerator><property name="suppressDate" value="true"/><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true"/></commentGenerator><!--数据库链接URL,用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/t_test" userId="root" password="root"></jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- 生成模型/实体 的包名和位置--><javaModelGenerator targetPackage="com.luonan.domain" targetProject="src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!-- 生成映射文件的包名和位置--><sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- 生成DAO的包名和位置--><javaClientGenerator type="XMLMAPPER" targetPackage="com.luonan.mapper" targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--><table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="t_project" domainObjectName="Project" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="t_role" domainObjectName="Role" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table></context></generatorConfiguration>

6、添加mysql数据至数据库

首先分析这三张表的关系

在mysql里面新建一个 t_test 库
CREATE DATABASE t_test;
<1>t_user
SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (`id` varchar(255) NOT NULL,`user_name` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`phone` varchar(255) DEFAULT NULL,`role_id` varchar(255) DEFAULT NULL COMMENT '角色id',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', '张三', '123', '123123', '1');
INSERT INTO `t_user` VALUES ('2', '李四', '123', '11', '2');
INSERT INTO `t_user` VALUES ('3', '王五', '123', '111', '3');
INSERT INTO `t_user` VALUES ('4', '张三', '1', '1', '2');

<2>t_project

SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for t_project
-- ----------------------------
DROP TABLE IF EXISTS `t_project`;
CREATE TABLE `t_project` (`id` varchar(255) NOT NULL,`project_name` varchar(255) DEFAULT NULL COMMENT '项目名称',`user_id` varchar(255) DEFAULT NULL,`content` varchar(2000) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_project
-- ----------------------------
INSERT INTO `t_project` VALUES ('1', '电影', '1', '红海行动');
INSERT INTO `t_project` VALUES ('2', '新时代 新气象', '1', '千万工程”造就万千美丽乡村');
INSERT INTO `t_project` VALUES ('3', '农业农村部', '1', '新一轮农业农村投资高潮或开启');
INSERT INTO `t_project` VALUES ('4', '农业中央纪委', '1', '集中整治“不吃公款吃老板”等不正之风部');
INSERT INTO `t_project` VALUES ('5', '今年养老金调整进入落地期', '1', '上海已出台调整方案');
INSERT INTO `t_project` VALUES ('6', '国产航母23日\"动一下\"', '2', '引全球关注 或完成关键测试');
INSERT INTO `t_project` VALUES ('7', '甘肃耗资16亿扶贫路假整改', '2', '巡视整改岂能蒙混过关?');

<3>t_role

SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for t_role
-- ----------------------------
DROP TABLE IF EXISTS `t_role`;
CREATE TABLE `t_role` (`id` varchar(255) DEFAULT NULL COMMENT '角色id',`name` varchar(255) DEFAULT NULL COMMENT '角色名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_role
-- ----------------------------
INSERT INTO `t_role` VALUES ('1', '董事长');
INSERT INTO `t_role` VALUES ('2', '部门经理');
INSERT INTO `t_role` VALUES ('3', '员工');

7、设置自动生成mapper.xml

mybatis-generator:generate -e

运行后产生:

8、SpringbootMybatisDemoApplication

package com.luonan;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.luonan.mapper") //mapper的包的位置
public class SpringbootMybatisDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootMybatisDemoApplication.class, args);}
}

9、UserMapper

<1>以下是正常通过generator生成的

a)  userMapper.java
package com.luonan.mapper;import com.luonan.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Map;public interface UserMapper {int deleteByPrimaryKey(String id);int insert(User record);int insertSelective(User record);User selectByPrimaryKey(String id);int updateByPrimaryKeySelective(User record);int updateByPrimaryKey(User record);
}

b) UserMapper.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" >
<mapper namespace="com.luonan.mapper.UserMapper" ><resultMap id="BaseResultMap" type="com.luonan.domain.User" ><id column="id" property="id" jdbcType="VARCHAR" /><result column="user_name" property="userName" jdbcType="VARCHAR" /><result column="password" property="password" jdbcType="VARCHAR" /><result column="phone" property="phone" jdbcType="VARCHAR" /><result column="role_id" property="roleId" jdbcType="VARCHAR" /></resultMap><sql id="Base_Column_List" >id, user_name, password, phone, role_id</sql><select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >select <include refid="Base_Column_List" />from t_userwhere id = #{id,jdbcType=VARCHAR}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.String" >delete from t_userwhere id = #{id,jdbcType=VARCHAR}</delete><insert id="insert" parameterType="com.luonan.domain.User" >insert into t_user (id, user_name, password, phone, role_id)values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{roleId,jdbcType=VARCHAR})</insert><insert id="insertSelective" parameterType="com.luonan.domain.User" >insert into t_user<trim prefix="(" suffix=")" suffixOverrides="," ><if test="id != null" >id,</if><if test="userName != null" >user_name,</if><if test="password != null" >password,</if><if test="phone != null" >phone,</if><if test="roleId != null" >role_id,</if></trim><trim prefix="values (" suffix=")" suffixOverrides="," ><if test="id != null" >#{id,jdbcType=VARCHAR},</if><if test="userName != null" >#{userName,jdbcType=VARCHAR},</if><if test="password != null" >#{password,jdbcType=VARCHAR},</if><if test="phone != null" >#{phone,jdbcType=VARCHAR},</if><if test="roleId != null" >#{roleId,jdbcType=VARCHAR},</if></trim></insert><update id="updateByPrimaryKeySelective" parameterType="com.luonan.domain.User" >update t_user<set ><if test="userName != null" >user_name = #{userName,jdbcType=VARCHAR},</if><if test="password != null" >password = #{password,jdbcType=VARCHAR},</if><if test="phone != null" >phone = #{phone,jdbcType=VARCHAR},</if><if test="roleId != null" >role_id = #{roleId,jdbcType=VARCHAR},</if></set>where id = #{id,jdbcType=VARCHAR}</update><update id="updateByPrimaryKey" parameterType="com.luonan.domain.User" >update t_userset user_name = #{userName,jdbcType=VARCHAR},password = #{password,jdbcType=VARCHAR},phone = #{phone,jdbcType=VARCHAR},role_id = #{roleId,jdbcType=VARCHAR}where id = #{id,jdbcType=VARCHAR}</update>
</mapper>

<2>下面介绍特殊的查询语法,连接查询

a)  userMapper.java

package com.luonan.mapper;import com.luonan.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Map;public interface UserMapper {//通过实体入参,返回实体对象List<User> findUserAndProjectByUser(User user);//通过实体入参,返回实体对象List<User> findUserAndRoleByUser(User user);//通过非同一个实体的多个参数进行入参,返回Map对象List<Map<String,Object>> findUserAndRole(@Param("userId") String userId,@Param("userName") String userName,@Param("roleName") String roleName);
}

b)UserMapper.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" >
<mapper namespace="com.luonan.mapper.UserMapper" ><!--第一组==============================================--><resultMap id="userAndProjectMap" type="User"><id column="id" jdbcType="VARCHAR" property="id" /><result column="user_name" jdbcType="VARCHAR" property="userName" /><result column="password" jdbcType="VARCHAR" property="password" /><result column="phone" jdbcType="VARCHAR" property="phone" /><result column="role_id" jdbcType="VARCHAR" property="roleId" /><collection ofType="Project" property="projectList"> <!--User实体需要改造--><id column="projectId" jdbcType="VARCHAR" property="id" /><result column="project_name" jdbcType="VARCHAR" property="projectName" /><result column="user_id" jdbcType="VARCHAR" property="userId" /><result column="content" jdbcType="VARCHAR" property="content" /></collection></resultMap><select id="findUserAndProjectByUser" parameterType="User" resultMap="userAndProjectMap" > /*resultType="java.util.Map" 返回Map*/SELECTu.*,p.content,p.id projectId,p.project_name,p.user_idFROM`t_user` uINNER JOIN t_project p ON u.id = p.user_idWHERE 1=1<if test="id != null">AND u.id = #{id,jdbcType=VARCHAR}</if><if test="userName != null">AND u.user_name = #{userName,jdbcType=VARCHAR}</if></select><!--第二组============================================================--><resultMap id="userAndRole" type="User"><id column="id" jdbcType="VARCHAR" property="id" /><result column="user_name" jdbcType="VARCHAR" property="userName" /><result column="password" jdbcType="VARCHAR" property="password" /><result column="phone" jdbcType="VARCHAR" property="phone" /><result column="role_id" jdbcType="VARCHAR" property="roleId" /><association javaType="Role" property="role">  <!--User实体需要改造--><result column="name" jdbcType="VARCHAR" property="name" /></association></resultMap><select id="findUserAndRoleByUser" parameterType="User" resultMap="userAndRole" > <!--resultType="java.util.Map" 返回Map-->SELECTu.*,r.nameFROM`t_user` uINNER JOIN t_role r ON u.role_id = r.idWHERE 1=1<if test="id != null">AND u.id = #{id,jdbcType=VARCHAR}</if><if test="userName != null">AND u.user_name = #{userName,jdbcType=VARCHAR}</if></select><!--第三组==================================================--><!--传入参数有user和role的;动态写法--><!--方式一 用where 和  if 注意点 语句中的where 省略不写  都要加and 会智能去掉where后面的and,但是不加and 不会智能添加and 所以都加and --><!--<select id="findUserAndRole" resultType="java.util.Map">SELECTu.*,r.nameFROM`t_user` uINNER JOIN t_role r ON u.role_id = r.id<where><if test="userId != null">AND u.id = #{userId,jdbcType=VARCHAR}</if><if test="userName != null">AND u.user_name LIKE CONCAT('%',#{userName,jdbcType=VARCHAR},'%')</if><if test="roleName != null">AND r.name LIKE CONCAT('%',#{roleName,jdbcType=VARCHAR},'%')</if></where></select>--><!--方式二 trim prefix="where" 开头加where prefixOverrides="and | or"自动去掉开头的and或者or--><!-- prefixOverrides-前缀覆盖;suffixOverrides-后缀覆盖 --><select id="findUserAndRole" resultType="java.util.Map"> <!--直接返回Map实体,不用改造实体,用原始的就行-->SELECTu.*,r.nameFROM`t_user` uINNER JOIN t_role r ON u.role_id = r.id<trim prefix="WHERE" prefixOverrides="AND | OR"><if test="userId != null">AND u.id = #{userId,jdbcType=VARCHAR}</if><if test="userName != null">AND u.user_name LIKE CONCAT('%',#{userName,jdbcType=VARCHAR},'%')</if><if test="roleName != null">AND r.name LIKE CONCAT('%',#{roleName,jdbcType=VARCHAR},'%')</if></trim></select>
</mapper>

改造后的User实体

package com.luonan.domain;import java.util.List;public class User {private String id;private String userName;private String password;private String phone;private String roleId;private List<Project> projectList; //新加入的 一对多private Role role; //新加入的 一对一public List<Project> getProjectList() {return projectList;}public void setProjectList(List<Project> projectList) {this.projectList = projectList;}public Role getRole() {return role;}public void setRole(Role role) {this.role = role;}public String getId() {return id;}public void setId(String id) {this.id = id == null ? null : id.trim();}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName == null ? null : userName.trim();}public String getPassword() {return password;}public void setPassword(String password) {this.password = password == null ? null : password.trim();}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone == null ? null : phone.trim();}public String getRoleId() {return roleId;}public void setRoleId(String roleId) {this.roleId = roleId == null ? null : roleId.trim();}
}
注意:用实体返回的结果和用Map返回的结果不同,实体更加清晰,Map的简单方便
a) List<User> findUserAndProjectByUser(User user);用实体返回
[{"id": "1","userName": "张三","password": "123","phone": "123123","roleId": "1","projectList": [{"id": "1","projectName": "电影","userId": "1","content": "红海行动"},{"id": "2","projectName": "新时代 新气象","userId": "1","content": "千万工程”造就万千美丽乡村"},{"id": "3","projectName": "农业农村部","userId": "1","content": "新一轮农业农村投资高潮或开启"},{"id": "4","projectName": "农业中央纪委","userId": "1","content": "集中整治“不吃公款吃老板”等不正之风部"},{"id": "5","projectName": "今年养老金调整进入落地期","userId": "1","content": "上海已出台调整方案"}],"role": null}
]
b) List<User> findUserAndRoleByUser(User user);用实体返回
[{"id": "1","userName": "张三","password": "123","phone": "123123","roleId": "1","projectList": null,"role": {"id": null,"name": "董事长"}},{"id": "4","userName": "张三","password": "1","phone": "1","roleId": "2","projectList": null,"role": {"id": null,"name": "部门经理"}}
]

c)   List<Map<String,Object>> findUserAndRole( @Param ( "userId" ) String userId, @Param ( "userName" ) String userName, @Param ( "roleName" ) String roleName);

用Map返回

[{"password": "123","phone": "123123","role_id": "1","user_name": "张三","name": "董事长","id": "1"},{"password": "123","phone": "11","role_id": "2","user_name": "李四","name": "部门经理","id": "2"},{"password": "123","phone": "111","role_id": "3","user_name": "王五","name": "员工","id": "3"},{"password": "1","phone": "1","role_id": "2","user_name": "张三","name": "部门经理","id": "4"}
]

10、Controller层

package com.luonan.controller;import com.luonan.domain.Project;
import com.luonan.domain.User;
import com.luonan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Created by Administrator on 2018/4/24.*/
@RestController
public class Controller {private final UserService userService;@Autowiredpublic Controller(UserService userService) {this.userService = userService;}@RequestMapping(value = "/add/user")public Object addUser(String id, String userName, String passWord, String phone) {User user = new User();user.setPassword(passWord);user.setPhone(phone);user.setId(id);user.setUserName(userName);return userService.addUser(user);}@RequestMapping(value = "/add/project")public Object addProject(String id, String projectName, String userId, String content) {Project project = new Project();project.setContent(content);project.setId(id);project.setProjectName(projectName);project.setUserId(userId);return userService.addProject(project);}@RequestMapping(value = "/update/user")public Object updateUser(String id, String userName, String passWord, String phone) {User user = new User();user.setPassword(passWord);user.setPhone(phone);user.setId(id);user.setUserName(userName);return userService.updateUser(user);}@RequestMapping(value = "/find/user")public Object findUserById(String userId) {return userService.findUserById(userId);}@RequestMapping(value = "/find/user-project")public Object findUserAndProjectByUser(String userId, String userName) {User user = new User();user.setId(userId);user.setUserName(userName);return userService.findUserAndProjectByUser(user);}@RequestMapping(value = "/find/user-role")public Object findUserAndRoleByUser(String userId, String userName) {User user = new User();user.setId(userId);user.setUserName(userName);return userService.findUserAndRoleByUser(user);}// 联合查询+多个参数+分页@RequestMapping(value = "/find/user-role-by")public Object findUserAndRole(String userId, String userName, String roleName, int pageNum, int pageSize) {return userService.findUserAndRole(userId, userName, roleName, pageNum, pageSize);}
}

12、service层

<1>UserService.java

package com.luonan.service;import com.luonan.domain.Project;
import com.luonan.domain.User;import java.util.List;
import java.util.Map;/*** Created by Administrator on 2018/4/24.*/
public interface UserService {/*** 添加用户** @param user* @return*/int addUser(User user);/*** 添加项目** @param project* @return*/int addProject(Project project);/*** 修改用户** @param user* @return*/int updateUser(User user);/*** 修改项目** @param project* @return*/int updateProject(Project project);/*** 根据userId查询用户** @param userId* @return*/User findUserById(String userId);/*** 联合查询User和Project** @param user* @return*/List<User> findUserAndProjectByUser(User user);/*** 联合查询User和Role** @param user* @return*/List<User> findUserAndRoleByUser(User user);/*** 联合查询User和Role** @return*/List<Map<String, Object>> findUserAndRole(String userId, String userName, String roleName, int pageNum, int pageSize);}

<2>UserServiceImpl.java

package com.luonan.service;import com.github.pagehelper.PageHelper;
import com.luonan.domain.Project;
import com.luonan.domain.User;
import com.luonan.mapper.ProjectMapper;
import com.luonan.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Map;/*** Created by Administrator on 2018/4/24.*/@Service
public class UserServiceImpl implements UserService {private final UserMapper userMapper;private final ProjectMapper projectMapper;@Autowiredpublic UserServiceImpl(UserMapper userMapper, ProjectMapper projectMapper) {this.userMapper = userMapper;this.projectMapper = projectMapper;}@Overridepublic int addUser(User user) {return userMapper.insertSelective(user);}@Overridepublic int addProject(Project project) {return projectMapper.insertSelective(project);}@Overridepublic int updateUser(User user) {return userMapper.updateByPrimaryKeySelective(user);}@Overridepublic int updateProject(Project project) {return projectMapper.updateByPrimaryKeySelective(project);}@Overridepublic User findUserById(String userId) {return userMapper.selectByPrimaryKey(userId);}@Overridepublic List<User> findUserAndProjectByUser(User user) {return userMapper.findUserAndProjectByUser(user);}@Overridepublic List<User> findUserAndRoleByUser(User user) {return userMapper.findUserAndRoleByUser(user);}@Overridepublic List<Map<String, Object>> findUserAndRole(String userId, String userName, String roleName, int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize); //使用分页插件分页return userMapper.findUserAndRole(userId, userName, roleName);}
}

Spring boot整合mybatis详细相关推荐

  1. Spring Boot整合Mybatis【超详细】

    pring Boot整合Mybatis 配置文件形式 pom.xml 配置数据源 UserMapper.xml UserMapper 配置springboot整合mybatis 在运行类上添加@Map ...

  2. Spring Boot整合MyBatis

    最近项目原因可能会继续开始使用MyBatis,已经习惯于spring-data的风格,再回头看xml的映射配置总觉得不是特别舒服,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便. Spri ...

  3. 干货必看|Spring Boot整合MyBatis框架详解

    在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持.所以今天壹哥就给大家讲解一下,如何在SpringBoot环境中整合 ...

  4. 2021-5-10:Spring Boot整合MyBatis

    Spring Boot整合MyBatis Spring Boot 整合MyBatis (一)基础环境搭建 1.数据准备 创建数据库.数据表并插入一定的数据 (1)创建博客数据库blog 在Navica ...

  5. Spring Boot 教程(三): Spring Boot 整合Mybatis

    教程简介 本项目内容为Spring Boot教程样例.目的是通过学习本系列教程,读者可以从0到1掌握spring boot的知识,并且可以运用到项目中.如您觉得该项目对您有用,欢迎点击收藏和点赞按钮, ...

  6. spring boot 整合mybatis 无法输出sql的问题

    使用spring boot整合mybatis,测试功能的时候,遇到到了sql问题,想要从日志上看哪里错了,但是怎么都无法输出执行的sql,我使用的是log4j2,百度了一下,很多博客都说,加上下面的日 ...

  7. Spring boot 整合 Mybatis 实现增删改查(MyEclipse版)

    1.首先搭建好一个Spring boot 程序,编写好启动类. 启动类代码如下: @SpringBootApplication public class Start {public static vo ...

  8. spring boot整合mybatis+通用mapper+pagehelper分页插件

    spring boot整合mybatis+通用mapper+pagehelper分页插件 pom依赖 <?xml version="1.0" encoding="U ...

  9. spring boot整合mybatis步骤

    spring boot整合mybatis步骤 官方说明:MyBatis-Spring-Boot-Starter will help you use MyBatis with Spring Boot 其 ...

最新文章

  1. 操作系统学习:基础轮廓梳理
  2. R语言ggplot2可视化时间序列散点图、X轴和Y轴都是时间信息、使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis)
  3. java中ArrayList与LinkedList的区别
  4. 潍坊市计算机专业招聘,潍坊市工业学校计算机专业介绍
  5. boost::pool模块实现验证是否 malloc/free 宏一切仍然正常的测试程序)
  6. 伪元素:placeholder-shown:focus-within
  7. PHP单引号和双引号的区别
  8. Java EE CDI依赖关系消歧示例
  9. Python制作回合制手游外挂简单教程(下)
  10. C++(STL):21---deque之源码剖析
  11. 软件项目管理-构建之法-四周总结
  12. 【拿不到offer全额退款】人工智能与 NLP / CV 第三期课程培训招生
  13. colorkey唇釉是否安全_Colorkey 空气唇釉真的那么好用吗?
  14. vscode jupyter补全_Cern ROOT 在jupyter里的使用
  15. EXCEL VBAProject密码破解 工作表密码破解
  16. docker login Error response from daemon: Get http://ip:port/v2/: net/http: request canceled
  17. IEEE年度薪酬报告发布!美国程序员薪资中位数7年来首次下降2.4万
  18. VMware下载,安装及创建虚拟机
  19. 测试wince wifi漫游的方法(参考)
  20. 同时采集抖音里多个视频,并批量添加相同的背景图片

热门文章

  1. 超级搞笑~~好色的美女
  2. php rssi计算公式,蓝牙rssi距离计算公式及代码
  3. CockroachDB架构浅析
  4. VxWorks编程常用函数说明
  5. Broadcast 分析之 registerReceiver
  6. 用python绘出一个莫比乌斯环
  7. 常系数非齐次线性微分方程通解的求法
  8. 自定义事务管理器TransactionManager对象
  9. IAR中移植UCOS II系统以及sourceInsight 使用
  10. 一.初识zigbee(文末附开发工具+协议栈)