SpringBoot整合Mybatis
3. SpringBoot整合mybatis
3.1 SpringBoot整合mybatis思路分析
回顾spring框架如何整合mybatis
springboot如何整合mybatis
3.2 SpringBoot整合mybatis编码
下面会用到的包结构:
- 引入依赖
在pom.xml中引入下面依赖
<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>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.4</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version></dependency><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version></dependency>
另外,有可能在引入依赖时特别慢,我们需要在pom.xml中加入下面几段话使用阿里云镜像:
<repositories> <repository> <id>aliyun-repos</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository></repositories><pluginRepositories> <pluginRepository> <id>aliyun-plugin</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository></pluginRepositories>
- 书写配置
# 整合mybatis相关配置spring: datasource: type: com.alibaba.druid.pool.DruidDataSource # 指定数据源类型,使用阿里巴巴的数据源 driver-class-name: com.mysql.jdbc.Driver # 指定数据库驱动 url: jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8 # 指定url username: root # 指定用户名 password: root # 指定密码mybatis: mapper-locations: classpath:com/baizhi/mapper/*.xml # 指定mapper配置文件的位置 type-aliases-package: com.baizhi.eneity # 为实体类起别名 默认 类名或类名首字母小写
入口类上加一个注解@MapperScan扫描dao接口所在的包
@SpringBootApplication@MapperScan("com.baizhi.dao") // 修饰范围: 用在类上 作用:用来扫描dao接口所在的包 同时将所有dao接口在工厂中创建对象public class SpringbootDay3Application { public static void main(String[] args) { SpringApplication.run(SpringbootDay3Application.class, args); }}
- 测试
需要用到的包结构
- 建表
- 开发实体类
public class User { private Integer id; private String name; private Date birthday; private Double salary;// 提供有参、无参、get、set、toString方法 //为了避免影响阅读体验,这里没有粘,但是是有的}
- 开发DAO接口
public interface UserDAO { // 查询所有 List<User> findAll(); // 保存用户信息 void save(User user);}
- 开发mapper配置文件
<mapper namespace="com.baizhi.dao.UserDAO"> <select id="findAll" resultType="com.baizhi.eneity.User"> select id, name, birthday, salary from user </select> <insert id="save" parameterType="com.baizhi.eneity.User" useGeneratedKeys="true" keyProperty="id"> insert into user values (#{id}, #{name}, #{birthday}, #{salary}) </insert></mapper>
- 开发service
public interface UserService { // 查询所有 public List<User> findAll(); // 保存用户信息 public void save(User user);}
@Service@Transactionalpublic class UserServiceImpl implements UserService{ private UserDAO userDAO; @Autowired public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } @Override public List<User> findAll() { return userDAO.findAll(); } @Override public void save(User user) { userDAO.save(user); }}
- Controller
@RestControllerpublic class UserController { private UserService userService; @Autowired public void setUserService(UserService userService) { this.userService = userService; } // 保存的方法 @RequestMapping("save") public void save(User user){ userService.save(user); } // 查询所有 @RequestMapping("findAll") public List<User> findAll(){ return userService.findAll(); }}
开启SpringBoot应用测试一下: