spring boot整合mybatis
来源:互联网 发布:什么事非农数据 编辑:程序博客网 时间:2024/06/07 10:37
spring boot整合mybatis
ORM框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis。
hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是spring data jpa这种模式了,基本上根据方法名就可以生成对应的sql了。
Mybatis最大的特点是:sql语句需要程序员来写,对sql书写有一定的要求。但是同时,也发挥了sql灵活性的价值。
mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。
其实就是myBatis看spring boot这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题;一种是简化后的xml配置sql,自动扫描注入接口实现。基于注解的方式,对于简单的实现非常容易,但涉及复杂的sql语句操作就显得捉襟见肘。第二种xml装配sql的方式,更加常用。
注意这里创建的是Spring Boot工程,不是Spring MVC。
注解版(无配置文件)
1、添加maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
2、application.properties数据库配置
mybatis.type-aliases-package=com.test.boot.entityspring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://172.18.81.146:3306/testspring.datasource.username = leespring.datasource.password = lee017
springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,让你你一切都不用管了,直接拿起来使用就行了。
在启动类中添加对mapper包扫描
@SpringBootApplication@MapperScan(value ="com.test.mapper")public class BootApplication {public static void main(String[] args) {SpringApplication.run(BootApplication.class, args);}}
3、Mapper接口
是最关键的一块,sql生产都在这里。
public interface UserMapper { @Select("SELECT id,name,passwd,appid FROM user WHERE id =#{id}") User getOne(Integer id); @Select("SELECT * FROM user") List<User> getAll(); @Delete("DELETE FROM user WHERE id =#{id}") void delete(Integer id); @Insert("INSERT INTO user(name,passwd,appid) VALUES(#{name}, #{passwd}, #{appid})") void insert(User user);}
Mapper接口中用注解,描述sql的操作,根据sql动态完成接口的Impl
· @Select 是查询类的注解,所有的查询均使用这个
· @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
· @Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值
· @Update 负责修改,也可以直接传入对象
· @delete 负责删除
4、编写Controller
package com.test.controller;import com.test.boot.entity.User;import com.test.mapper.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestControllerpublic class UserController { @Autowired(required = false) private UserMapper userMapper; //-http://localhost:8080/getUser?id=1 @RequestMapping(value="/getUser",method = RequestMethod.GET) public User getUser(@RequestParam("id") Integer id) { User user=userMapper.getOne(id); return user; } @RequestMapping(value="/getUsers",method = RequestMethod.GET) public List<User> getUsers() { return userMapper.getAll(); } //-http://localhost:8080/add?name=abc&passwd=123&appid=95955542783 @RequestMapping(value = "/add", method = RequestMethod.GET) public void save(@RequestParam("name") String name, @RequestParam(value = "passwd",defaultValue = "0") String passwd, @RequestParam(value = "appid",defaultValue = "0") String appid) { userMapper.insert(new User(name,passwd,appid)); } @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) public void delete(@PathVariable("id") Integer id) { userMapper.delete(id); }}
测试:
源码下载:http://download.csdn.net/detail/ljheee/9919393
- spring boot整合mybatis
- Spring Boot整合MyBatis
- spring boot 整合mybatis
- Spring Boot整合MyBatis
- Spring-boot整合Mybatis
- Spring Boot整合MyBatis
- spring boot 整合mybatis
- Spring Boot整合Mybatis
- spring boot mybatis整合
- spring boot整合mybatis
- Spring Boot 整合 MyBatis
- spring-boot整合mybatis
- Spring Boot整合Mybatis
- Spring Boot 整合 MyBatis
- spring boot整合mybatis
- Spring Boot整合MyBatis
- spring boot整合mybatis
- spring Boot整合mybatis
- 3.多线程之Thread VS Runnable
- git(十三)-git裸库与submodule
- 第八章 SpringMVC引入css-跟赵大笨笨学SpringMVC
- POJ 3050:Hopscotch
- 数据传参
- spring boot整合mybatis
- 为什么实践高于研究
- osgi入门(一)
- 学习akka之邮箱
- day_13 C语言数组和指针
- #8 自定义适配器
- fork()函数
- 学习akka之消息
- Truncate 和 delete 的区别