SpringBoot集成mybatis连接oracle的图文教程

网友投稿 355 2022-08-25


SpringBoot集成mybatis连接oracle的图文教程

目录一、背景原始的连接数据库的步骤二、整合过程springboot集成mybatis连接oracle数据库的过程个人感悟

一、背景

在实际开发过程中是离不开数据库的,如果不使用任何框架,那么连接数据库的代码会散落在项目的各个地方,且容易出现各种连接数据库问题。

原始的连接数据库的步骤

1.加载驱动(什么数据库,就记载什么驱动)2.获取连接3.编写sql4.创建statement5.执行sql语句并处理结果6.自下而上一次关闭连接(容易出现异常)

在实际开发中,操作数据库还http://是很频繁的,如果按照这个步骤连接数据库,会很影响性能,用户体验也不好。而Mybatis内部封装了jdbc,开发人员只需要考虑sql语句的编写和处理返回结果,其余都封装好了,这样极

大程度减少了开发工作量。

二、整合过程

稀里糊涂的就整合好了,自己却是一脸蒙

springboot 集成mybatis连接oracle数据库的过程

1.tools:Spring Boot, IDEA,Oracle,MyBatis,Maven…

2.在上一篇项目搭建成功的基础上:

2.1 在POM.xml 文件添加依赖:

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.1.1

org.springframework.boot

spring-boot-starter-jdbc

com.oracle

ojdbc6

11.2.0.1.0

注意:在下面这个地方能看到,说明依赖添加成功了:

如果没有:就需要手动添加依赖:

先下载驱动(ojdbc6.jar),cd到下载的ojdbc6.jar所在路径,执行命令

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar

出现BUILD SUCCES,说明成功了。但是文件位置可能不对,需要移到maven的Reponsitory中。将生成的oracle文件拷贝到相应的目录下。

查看reponsitory的位置:

放的路径如下:

3. 依赖添加成功后,就需要配置mvc层

3.1 controller层:

//第一行可以写 @Restcontroller(返回json的controller)

//@Restcontroller = @Controller + @ResponseBody

@Controller

public class PersonController {

@Resource

private PersonIService personIService;

@RequestMapping("/person")

@ResponseBody//json返回

public List findAll(){

List list = personIService.findAll();

return list;//[{},{}]

}

@RequestMapping("/findPersonByid/{id}")

@ResponseBody//返回json类型

public Person findByid(@PathVariable("id") Integer id){

return personIService.findByid(id);//{}

}

}

3.2 service 层:

@Shttp://ervice

public class PersonServiceImpl implements PersonIService{

@Autowired

private IPersonDao dao;

public List findAll(){

return dao.findAll();

}

public Person findByid(Integer id){

return dao.findByid(id);

}

这里有个细节问题:这个dao可能会报错,但是不影响,如果看不习惯就在这里设置下:

3.3 dao层:注意:只有接口,没有实现类

//不使用@Mapper注解,通过使用.xml文件,在对应的.xml写sql语句,查出数据并返回

public interface IPersonDao {

public List findAll();

public Person findByid(@Param("id") Integer id);

}

另外一种方法(拿其他栗子举例):

//使用了@Mapper注解 ,就不需要再写.xml文件

@Mapper

public interface IEmployeeDao {

@Select("select * from tbl_emp e where e.name=#{name}")

public List findEmpByName(@Param("name") String name);

}

3.4 entity 层:

/**

* 持久化类

* by wx 2019-04-08

*/

public class Person implements Serializable {

private static final long serialVersionUID = -6172780607087661025L;

private Integer id;

private String name;

private String addr;

private String company;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAddr() {

return addr;

}

public void setAddr(String addr) {

this.addr = addr;

}

public String getCompany() {

return company;

}

public void setCompany(String company) {

this.company = company;

}

}

3.5 在application.yml文件配置连接数据库:

在这里遇到了2个问题:

1.一直报这个驱动类找不到,但是这个驱动类jar包已经添加到项目了,并且我也反编译jar包,确认路径是对的。后来将target文件夹删掉重新编译,就没有问题了。

2.我用sys/root作为用户名/密码连接,报,拒接连接,让我创建sys连接并授权之类的,然后我就用/as sysdba登陆 创建了一个用户,如图所示(因为之前已经建立了c##root用户,这里就拿c##wx做例子):

由于tbl_person表是建立在sysdba用户下的,在c##root用户下不能查询,在次用户下想访问就需要将这个表单独授权给c##root用户,同时还需要建同义词,这样就可以省略前缀sys.,直接通过表名就可以操作。

如图所示:

3.6 入口函数配置扫描mapper,即:@MapperScan(“com.wx.springbootdemo.dao”)

@RestController

@SpringBootApplication

@MapperScan("com.wx.springbootdemo.dao")//要扫描的dao包

public class SpringbootdemoApplication {

public static void main(String[] args) {

SpringApplication.run(SpringbootdemoApplication.class, args);

}

}

3.7 mapper映射文件:

select id,name,addr ,company from tbl_person

select * from tbl_person where id = #{id}

3.8 项目结构:

测试:先启动项目,然后如下访问:

另一种测试方法(Spring Boot 内嵌的tools),如下图:

个人感悟

Mybatis:虽然做到了代码和sql语句分离,但是无法做到数据库无关性,即换了一个数据库例如mysql,很多语句就得做修改。Hibernate:是ORM框架,做到了数据库无关性,很好的封装了底层jdbc。支持独特的Hql查询,也支持原生的sql语句。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:26Django中间件的编写和执行顺序
下一篇:字符串的常用操作2(字符串操作指令)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~