博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring boot 整合 Mybatis
阅读量:7119 次
发布时间:2019-06-28

本文共 5080 字,大约阅读时间需要 16 分钟。

 

最近项目需要用到了Spring boot 和 Mybatis,现整理一下。

orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis。

hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是spring data jpa这种模式了,基本上根据方法名就可以生成对应的sql了。

mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。

 

1.创建一个springboot项目:

这里写图片描述

2.创建项目的文件结构以及jdk的版本

这里写图片描述

3.选择项目所需要的依赖

这里写图片描述
这里写图片描述
然后点击finish

5.看一下文件的结构:

这里写图片描述

 

6.查看一下pom.xml:

org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
mysql
mysql-connector-java
org.springframework.boot
spring-boot-devtools
true

 

7.application.properties 添加相关配置: 

mybatis.type-aliases-package=com.macaupass.entitymybatis.config-locations=classpath:mybatis/mybatis-config.xmlmybatis.mapper-locations=classpath:mybatis/mapper/*.xmlspring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://localhost:3306/merchant_receipt?useUnicode=true&characterEncoding=utf-8spring.datasource.username = rootspring.datasource.password = 123456

  

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

@SpringBootApplication@MapperScan("com.neo.mapper")public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

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

 

9.开发Mapper

第三步是最关键的一块,sql生产都在这里

public interface UserMapper {    @Select("SELECT * FROM users")    @Results({        @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),        @Result(property = "nickName", column = "nick_name")    })    List
getAll(); @Select("SELECT * FROM users WHERE id = #{id}") @Results({ @Result(property = "userSex", column = "user_sex", javaType = UserSexEnum.class), @Result(property = "nickName", column = "nick_name") }) UserEntity getOne(Long id); @Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})") void insert(UserEntity user); @Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}") void update(UserEntity user); @Delete("DELETE FROM users WHERE id =#{id}") void delete(Long id);}
 

9.1 如果不在Mapper中写SQL,则要指定了mybatis基础配置文件和实体类映射文件的地址

mybatis-config.xml 配置

这里也可以添加一些mybatis基础的配置。

添加user的映射文件:

id, userName, passWord, user_sex, nick_name
INSERT INTO users (userName,passWord,user_sex) VALUES (#{userName}, #{passWord}, #{userSex})
UPDATE users SET
userName = #{userName},
passWord = #{passWord},
nick_name = #{nickName} WHERE id = #{id}
DELETE FROM users WHERE id =#{id}

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

 

10.使用

上面三步就基本完成了相关dao层开发,使用的时候当作普通的类注入进入就可以了

@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperTest {    @Autowired    private UserMapper UserMapper;    @Test    public void testInsert() throws Exception {        UserMapper.insert(new UserEntity("aa", "a123456", UserSexEnum.MAN));        UserMapper.insert(new UserEntity("bb", "b123456", UserSexEnum.WOMAN));        UserMapper.insert(new UserEntity("cc", "b123456", UserSexEnum.WOMAN));        Assert.assertEquals(3, UserMapper.getAll().size());    }    @Test    public void testQuery() throws Exception {        List
users = UserMapper.getAll(); System.out.println(users.toString()); } @Test public void testUpdate() throws Exception { UserEntity user = UserMapper.getOne(3l); System.out.println(user.toString()); user.setNickName("neo"); UserMapper.update(user); Assert.assertTrue(("neo".equals(UserMapper.getOne(3l).getNickName()))); }}

  

 

 

如何选择:

两种模式各有特点,注解版适合简单快速的模式,其实像现在流行的这种微服务模式,一个微服务就会对应一个自已的数据库,多表连接查询的需求会大大的降低,会越来越适合这种模式。

老传统模式比适合大型项目,可以灵活的动态生成SQL,方便调整SQL,也有痛痛快快,洋洋洒洒的写SQL的感觉。

 

 

参考:

  

转载于:https://www.cnblogs.com/caoweixiong/p/10708985.html

你可能感兴趣的文章
详解MySQL基准测试和sysbench工具
查看>>
使用Spring Session和Redis解决分布式Session跨域共享问题
查看>>
手机锁屏密码忘记了怎么办,清除锁屏的办法
查看>>
BVS烟火识别输油站烟火检测应用
查看>>
使用Apache Ignite构建C++版本的分布式应用
查看>>
数据库基本概念
查看>>
恢复后缀ETH勒索病毒解密方法 恢复sql文件.com].ETH
查看>>
找到dht网络的节点了
查看>>
国内整C多IP服务器怎么搭建代理IP,又怎么区分代理IP呢
查看>>
人工智能+教育的应用——教育的安全
查看>>
一种面包屑导航
查看>>
shell脚本练习
查看>>
pdf页眉页脚设置步骤
查看>>
MySQL常用命令
查看>>
js如何保证iframe里的内容,显示在父窗口
查看>>
加速你的企业数字化转型,首先做到这一步!
查看>>
Mysql复制架构
查看>>
Docker封装Java环境镜像(Alpine+OpenJDK)
查看>>
自己动手实现分布式任务调度框架
查看>>
配置 vim
查看>>