IDEA快速Mybatis+Oracle

本文档详细介绍了如何在IDEA环境下快速配置Mybatis与Oracle数据库的结合。首先,通过修改POM文件添加相关依赖,然后在applicationContext.xml中配置数据源。接着,设置mybatis-config.xml和jdbc.properties。完成配置后,逐步创建PhoneController、PhoneService、PhoneMapper及对应的实体类。最后,指导进行Oracle数据库建表操作。

上级文章:

IDEA快速Sringmvc+Maven:IDEA快速Sringmvc+Maven-优快云博客


快速构建了架构之后,配置相应的数据库,先配置POM和applicationContext,

总共会增加的项:

applicationContext引用spring-dataSource.xml分离数据源配置,

applicationContext也加载jdbc.properties关于数据库连接的属性,

spring-dataSource加载mybatis-config.xml配置。

1、POM文件,增加相应的类库

<!-- oracle数据库连接池 -->
    <!-- https://mvnrepository.com/artifact/oracle/ojdbc -->
    <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc</artifactId>
      <version>14.0</version>
    </dependency>

    <!--mybatis 包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.3.0</version>
    </dependency>
    <!--mybatis 整合spring的适配包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>

2、applicationContext.xml增加相应的配置

    <!-- 加载配置文件 -->
    <context:property-placeholder location="classpath:*.properties" />

    <!--数据源的配置-->
    <import resource="classpath:/spring/spring-dataSource.xml"/>

3、增加spring-dataSource,用来分离填写相应的 dataSource 配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--数据源配置,使用Tomcat jdbc pool-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <!--整合 mybatis-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--指定mybatis的全局配置文件-->
        <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></property>
        <property name="mapperLocations" value="classpath:/mapper/*.xml"></property>
        <property name="dataSource" ref="dataSource"></property>
        <!--<property name="mapperLocations" value="classpath*:mapper/*.xml"></property>-->
    </bean>

    <!--配置扫描器 将mybatis接口实现加入到ioc容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.angular.test.dao" ></property>
    </bean>

    <!--事务控制 为了便于管理数据库-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--配置数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--开启基于注解的事务 或者是xml配置事务-->
    </bean>

    <!--配置一个可以批量执行的sqlSession-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sessionFactory"/>
        <constructor-arg name="executorType" value="BATCH"/>
    </bean>

    <!--json转化器,它可以将结果转化-->
    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>

</beans>

4、配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
        <!-- 控制全局缓存(二级缓存)-->
        <setting name="cacheEnabled" value="false"/>
        <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false  -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖-->
        <setting name="aggressiveLazyLoading" value="false"/>
        <!--  Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST -->
        <!--<setting name="proxyFactory" value="CGLIB" />-->
        <!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 -->
        <!--
                <setting name="localCacheScope" value="STATEMENT"/>
        -->
        <setting name="localCacheScope" value="SESSION"/>
    </settings>

    <!--<typeAliases>
        <typeAlias alias="blog" type="com.wuzz.domain.Blog" />
    </typeAliases>-->

    <!--    <typeHandlers>
            <typeHandler handler="com.wuzz.type.MyTypeHandler"></typeHandler>
        </typeHandlers>-->

    <!-- 对象工厂 -->
    <!--    <objectFactory type="com.wuzz.objectfactory.GPObjectFactory">
            <property name="wuzz" value="666"/>
        </objectFactory>-->

    <!--    <plugins>
            <plugin interceptor="com.wuzz.interceptor.SQLInterceptor">
                <property name="wuzz" value="betterme" />
            </plugin>
            <plugin interceptor="com.wuzz.interceptor.MyPageInterceptor">
            </plugin>
        </plugins>-->

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/><!-- 单独使用时配置成MANAGED没有事务 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

 6、jdbc.properties

#oracle数据库
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521/orcl
jdbc.username=scott
jdbc.password=tjw


配置完之后,从controller进行创建

1、PhoneController

package org.angular.test.controller;


import org.angular.test.entity.Phone;
import org.angular.test.service.PhoneService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping(value = "/phone", produces = "application/json;charset=utf-8")
public class PhoneController {

    @Autowired
    private PhoneService phoneService;

    @RequestMapping("/getList")
    @ResponseBody
    public List<Phone> getList() {
        List<Phone> list = phoneService.getList();
        return list;
    }

    @RequestMapping("/getList2")
    @ResponseBody
    public List<String> getList2() {
        List<String> list = new ArrayList<String>();
        list.add("dd");
        return list;
    }
}

2、PhoneService

package org.angular.test.service;

import org.angular.test.dao.PhoneMapper;
import org.angular.test.entity.Phone;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PhoneService {

    @Autowired
    private PhoneMapper phoneMapper;

    public List<Phone> getList() {
        return phoneMapper.getList();
    }
}

3、PhoneMapper

package org.angular.test.dao;

import org.angular.test.entity.Phone;

import java.util.List;

public interface PhoneMapper {
    List<Phone> getList();
}

4、Phone

package org.angular.test.entity;

import java.util.Date;

public class Phone {
    private int phoneId;
    private String pNumber;
    private String phoneName;
    private Date createTime;

    public void setPhoneId(int phoneId) {
        this.phoneId = phoneId;
    }

    public void setNumber(String pNumber) {
        this.pNumber = pNumber;
    }

    public void setPhoneName(String phoneName) {
        this.phoneName = phoneName;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public int getPhoneId() {
        return phoneId;
    }

    public String getPNumber() {
        return pNumber;
    }

    public String getPhoneName() {
        return phoneName;
    }

    public Date getCreateTime() {
        return createTime;
    }

    @Override
    public String toString() {
        return "Phone{" +
                "phoneId=" + phoneId +
                ", number=" + pNumber +
                ", phoneName='" + phoneName + '\'' +
                ", createTime=" + createTime +
                '}';
    }
}

5、PhoneMapper

<?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="org.angular.test.dao.PhoneMapper">

    <select id="getList" resultType="org.angular.test.entity.Phone">
      select
        PHONE_ID as "phoneId",
        PHONE_NAME as "phoneName",
        CREATE_TIME as "createTime",
        P_NUMBER as "pNumber"
      from t_phone
    </select>


</mapper>


然后进行Oracle的数据库的建表事情


下级文章:

Mybatis+Oracle库建表,查询返回:Mybatis+Oracle库建表,查询返回_mybatis如何执行oracle的建表语句-优快云博客

快速Mybatis配置动态多数据源(基于XML):快速Mybatis配置动态多数据源(基于XML)_多数据源配置xml bean-优快云博客

Python连接Oracle出错:Python连接Oracle出错_python could not resolve the connect iden-优快云博客

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值