zoukankan      html  css  js  c++  java
  • Spring Boot2(一):使用Spring Boot2集成Mybatis基础搭建

    本文在个人技术博客【鸟不拉屎】同步发布,详情可猛戳 亦可扫描文章末尾二维码关注个人公众号【鸟不拉屎】

    Mybatis 初期使用比较麻烦,需要各种配置文件、实体类、Dao 层映射关联、还有一大推其它配置。mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以简单配置轻松上手。

    mybatis-spring-boot-starter

    官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
    其实就是 Mybatis 看 Spring Boot 这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。

    当然任何模式都需要首先引入mybatis-spring-boot-starter的 Pom 文件,现在最新版本是 2.0.1

    <dependency>
    	<groupId>org.mybatis.spring.boot</groupId>
    	<artifactId>mybatis-spring-boot-starter</artifactId>
    	<version>2.0.1</version>
    </dependency>
    

    我一般使用的是XML极简模式,可能是由于之前用的hibernate用习惯了

    极简 xml 版本

    极简 xml 版本保持映射文件的老传统,接口层只需要定义空方法,系统会自动根据方法名在映射文件中找对应的 Sql .

    1 添加相关 Maven 文件

    <dependencies>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    

    完整的 Pom 包这里就不贴了,大家直接看源码

    2、application.yml相关配置

    推荐使用application.yml进行配置,其实使用application.yml或者application.properties都是一样的效果,application.yml最终是转换为application.properties进行生效的,只不过application.yml视觉效果看起来更加明了。新建项目默认为application.properties,直接改为application.yml,另外新增一个application-test.yml用户不同环境使用不同的配置文件用。

    application.yml配置:

    #指定配置文件为test
    spring:
      profiles:
        active: test
    
    #配置Mybatis
    mybatis:
      type-aliases-package: com.niaobulashi.entity
      mapper-locations: classpath:mapper/*.xml
      configuration:
        # 开启驼峰命名转换,如:Table(create_time) -> Entity(createTime)。不需要我们关心怎么进行字段匹配,mybatis会自动识别`大写字母与下划线`
        map-underscore-to-camel-case: true
    
    #打印SQL日志
    logging:
      level:
        com.niaobulashi.dao: DEBUG
    

    application-test.yml配置:

    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver
    

    Spring Boot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到 sqlSessionFactory 中,sqlSessionFactory 会自动注入到 Mapper 中,对了,你一切都不用管了,直接拿起来使用就行了。

    在启动类中添加对 mapper 包扫描@MapperScan

    @SpringBootApplication
    @MapperScan("com.niaobulashi.dao")
    public class MybatisApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MybatisApplication.class, args);
        }
    
    }
    

    或者直接在 Mapper 类上面添加注解@Mapper,建议使用上面那种,不然每个 mapper 加个注解也挺麻烦的

    3、添加 User 的实例

    @Data
    public class SysUserEntity implements Serializable {
    	private static final long serialVersionUID = 1L;
    	//用户ID
    	private Long userId;
    
    	//用户名
    	private String username;
    
    	//密码
    	private String password;
    
    	//盐
    	private String salt;
    
    	//邮箱
    	private String email;
    
    	//手机号
    	private String mobile;
    
    	//状态  0:禁用   1:正常
    	private Integer status;
    	
    	//创建时间
    	private Date createTime;
    }
    

    4、添加 User 的映射文件

    <mapper namespace="com.niaobulashi.dao.SysUserDao">
    
        <!--查询用户的所有菜单ID-->
        <select id="queryUserInfo" resultType="com.niaobulashi.entity.SysUserEntity">
            SELECT
                ur.*
            FROM
                sys_user ur
            WHERE
                1 = 1
              AND ur.user_id = #{userId}
        </select>
    
    </mapper>
    

    其实就是把上个版本中 Mapper 的 Sql 搬到了这里的 xml 中了

    5、编写 Mapper 层的代码

    public interface SysUserDao {
    	/**
    	 * 根据userId查询用户信息
    	 * @param userId  用户ID
    	 */
    	List<SysUserEntity> queryUserInfo(Long userId);
    }
    

    5、编写Service层的代码

    SysUserService接口类:

    public interface SysUserService {
    	/**
    	 * 查询用户的所有菜单ID
    	 */
    	List<SysUserEntity> queryUserInfo(Long userId);
    }
    

    SysUserServiceImpl实现类:

    @Service("sysUserService")
    public class SysUserServiceImpl  implements SysUserService {
    	@Resource
    	private SysUserDao sysUserDao;
    	/**
    	 * 查询用户的所有菜单ID
    	 * @param userId
    	 * @return
    	 */
    	@Override
    	public List<SysUserEntity> queryUserInfo(Long userId) {
    		return sysUserDao.queryUserInfo(userId);
    	}
    }
    

    7、测试

    经过上面5个步骤就可以完成基本的接口开发,省去了Controller层的开发

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class MabatisTest {
        private final static Logger logger = LoggerFactory.getLogger(MabatisTest.class);
    
        @Autowired
        private SysUserService sysUserService;
    
        @Test
        public void queryUserInfo() throws Exception {
            SysUserEntity userEntity = new SysUserEntity();
            userEntity.setUserId(1L);
            List<SysUserEntity> list = sysUserService.queryUserInfo(userEntity.getUserId());
            logger.info("list:" + list);
        }
    
    }
    

    最后项目目录结构

    mybaits_01_hello项目目录结构

    总结

    SpringBoot和Mybatis这对CP,完美

    示例代码-github


    关于作者:

    个人博客:鸟不拉屎

    github主页:niaobulashi

    github博客:鸟不拉屎

    掘金:鸟不拉屎

    博客园:鸟不拉屎

    知乎:鸟不拉屎

    微博:胡浪同學

    公众号:鸟不拉屎

  • 相关阅读:
    1104 Sum of Number Segments (20 分)(数学问题)
    1092 To Buy or Not to Buy (20 分)(hash散列)
    1082 Read Number in Chinese (25 分)(字符串处理)【背】
    1105 Spiral Matrix (25 分)(模拟)
    初识网络安全及搭建网站(内网)
    HTML5开发者需要了解的技巧和工具汇总(转)
    native+web开发模式之web前端经验分享
    移动平台3G手机网站前端开发布局技巧汇总(转)
    Asp.net 中图片存储数据库以及页面读取显示通用方法详解附源码下载
    使用H3Viewer来查看VS2010的帮助文档
  • 原文地址:https://www.cnblogs.com/niaobulashi/p/mybatis-hello.html
Copyright © 2011-2022 走看看