springBoot 整合 mybatis+Oracle
现在比较流行的操作数据库操作层框架 Mybatis,下面我们就来看看 Springboot 如何整合 mybatis, 之前一直在用 xml 形式写 sql,这次依然用 xml 的方式感觉这种还是比较灵活方便。
添加 mybatis 关键就是要引入 mybatis-spring-boot-starter 到 pom 文件中,如果你用 MySQL,那就引入 MySQL 的 pom 文件,这里我用 Oracle,淡然要引入 Oracle 的依赖了。添加完成 mybatis 和 Oracle 在 pom.xml 文件中的引入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!-- 链接Oracle数据库 oracle ojdbc不免费,需要手动引入jar包 --> <dependency> <groupId>oracle</groupId> <artifactId>ojdbc6</artifactId> <version> 11.2 . 0.3 </version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 集成mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version> 1.3 . 1 </version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version> 1.1 . 0 </version> </dependency> |
注意:
如果你用的是 Oracle 数据库在 pom.xml 中有可能会报这个错 Missing artifact oracle:ojdbc6:jar 因为 Oracle 的 ojdbc.jar 是收费的,所以 maven 的中央仓库没有这个资源,只能配置本地仓库才能加载到项目中去。
配置 application.properties
1
2
3
4
5
6
7
8
9
10
11
|
mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml #oracle database jdbc spring.datasource.url=jdbc:oracle:thin:@ //localhost:1521/orcl spring.datasource.username=root spring.datasource.password= 123456 spring.datasource.driver- class -name=oracle.jdbc.driver.OracleDriver spring.datasource.max-idle= 10 spring.datasource.max-wait= 10000 spring.datasource.min-idle= 5 spring.datasource.initial-size= 5 |
指定了 mybatis 的配置地址,你可以在 mybatis/mybatis-config.xml 中添加一些其他配置
完成之后你就可以去 mapper 文件夹下自由潇洒的去写 sql 去了
我们来测试一下看看是否成功,去写个 sql 试试效果怎么样?就返回用户的一些基本信息吧。实现代码如下:
Controller 层:
1
2
3
4
5
6
7
8
9
10
11
|
@RestController public class UserController { @Autowired private UserService userService; @RequestMapping (value = "/user" , method = RequestMethod.GET) public User findUserByName( @RequestParam (value = "userName" , required = true ) String userName) { return userService.findUserByName(userName); } } |
Service 层:只写方法具体实现在 UserServiceImpl 类中
1
2
3
4
5
6
|
@Service public interface UserService { User findUserByName(String userName); } |
Service 层的实现类,实现 UserService 中的方法
1
2
3
4
5
6
7
8
9
10
11
12
|
@Component public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public User findUserByName(String userName) { User user = userDao.findUserByName(userName); return user; } } |
Dao 层 注意要添加 @Mapper 注解,否则会报错的
1
2
3
4
|
@Mapper public interface UserDao { User findUserByName( @Param ( "userName" ) String userName); } |
实体类
1
2
3
4
5
6
|
public class User { private String code; private String username; private String name; //get/set方法省略 } |
userMapper.xml 要注意 namespace 能否正确跳转(路径是否正确)
1
2
3
4
5
6
7
8
9
|
<?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.power.manger.dao.UserDao" > <select id= "findUserByName" resultMap= " com.XXX.model.User " parameterType= "java.lang.String" > select code, user_name as username, name from tb_user_info where name=#{userName} </select> </mapper> |
这些都完成之后,那么接下来就是见证奇迹的时刻了,启动项目,浏览器输入地址显示如下
数据库中查询结果如下
成功整合了 mybatis 和 Oracle!