springboot+Oracle数据库实现增删改查

写在前面

这一整套包括springboot项目的创建,Oracle数据库连接,多数据源配置,layui数据表格展示,Ajax数据的前后端交互暂时先写这么多吧。

1.springboot项目创建

1.直接上图片

在这里插入图片描述
直接下一步,其中的dependencies暂时什么都不选,后面自己添加

  • 现在的项目就是这个样子了
    在这里插入图片描述
  • 建立好的模型是这个样子的
    在这里插入图片描述
  • 先配置maven文件,file—>setting---->输入maven
    在这里插入图片描述
    到这里项目就建好了

2.Oracle数据库的连接

  • 先在数据库里创一个测试类
    在这里插入图片描述

  • 现在写properties文件,也可以是yml文件,我习惯写properties文件在这里插入图片描述

  • pom文件 先添加这两个就可以了
    在这里插入图片描述

  • 如果ojdbc.jar导入爆红的话,看看这篇博客
    手动导入Oracle驱动,我之前写的

  • 先来简单测试一下是否可以连接到Oracle数据库

在test下见一个Oracleconnection类

 public static Connection getConnection(){
        String url="jdbc:oracle:thin:@这里自己要配置好:orcl";
        String username="自己写";
        String password="自己写";
        String driver="oracle.jdbc.driver.OracleDriver";
        try {
            Class.forName(driver);
            Connection con= DriverManager.getConnection(url, username, password);
            Statement state=con.createStatement();   //容器
            String sql="select * from user_test";   //SQL语句
            ResultSet resultSet= state.executeQuery(sql);         //将sql语句上传至数据库执行
            while (resultSet.next()){
                System.out.println(resultSet.getString(1)+"--"+resultSet.getString(2));
            }
            con.close();//关闭通道
            return con;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void main(String[] args) {
        Connection conn=OracleConnection.getConnection();
    }

运行测试结果如图
在这里插入图片描述

3.先写一套mvc

###3.1直接上代码
在这里插入图片描述

domain 下的User类
public class User {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
mapper UserMapper
@Repository
public interface UserMapper {
    List<User> getAll();
}

service UserService 以及UserServiceImpl
UserService:
public interface UserService {
    List<User> getAll();
}
UserServiecImpl:
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public List<User> getAll() {
        return userMapper.getAll();
    }
}

controller UserController
/**这个RequesetMapping和RestController需要在pom导入一个文件
我为了省麻烦就在这将这个文件写在这,你自己添加到pom文件中
<!--web 对应的是RequestMapping等jar包-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
 **/
@RequestMapping("/test")
@RestController
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/getAll")
    private List<User> getAll(){
        List<User> users=userService.getAll();
        //将查询到的集合遍历一下
        for (User u:users){
            System.out.println("username:"+u.getUsername()+"_______password:"+u.getPassword());
        }
        return users;
    }
}

到这里一套mvc就写完了,现在来配置数据源和UserMapper.xml文件,现在的druid还没用,我是直接上代码了:

在这里插入图片描述

pom文件 全贴出来了
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!--以下是我添加的-->
		<!--Oracle-->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.1.0</version>
		</dependency>

		<!--引入Spring封装的jdbc-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<!--web 对应的是RequestMapping等jar包-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- alibaba的druid数据库连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.10</version>
		</dependency>

		<!--mybatis-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

		<!-- 分页插件 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.1.2</version>
		</dependency>

druid OracleDataSourceProperties
/**
这里prefix="spring.datasource.oracle",是properties文件中配置的主数据源前缀
这样就可以获取数据了
**/
@Component
@ConfigurationProperties(prefix = "spring.datasource.oracle")
public class OracleDataSourceProperties {
    private String url;
    private String username;
    private String password;
    private String  driverClassName;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }
}

druid OracleDataSourceConfig 这个十分重要,一定不能出错,还是贴一张图片吧,就怕出错了在这里插入图片描述
/**这是一个OracleDataSourceConfig **/
@Configuration
@MapperScan(basePackages = OracleDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "oracleSqlSessionFactory")
public class OracleDataSourceConfig {
    //你的mapper位置,会自动扫描,这也就是自动装配的好处了
    static final String PACKAGE = "com.example.demo.mapper";
    //你的mapper.xml位置
    static final String MAPPER_LOCATION = "classpath:oracleMapper/*.xml";

    @Autowired
    private OracleDataSourceProperties config;

    @Bean(name = "oracleDataSource")
    @Primary
    public DataSource oracleDataSource() throws Exception{

        Properties properties = new Properties();
        properties.put("driverClassName", config.getDriverClassName());
        properties.put("url", config.getUrl());
        properties.put("username", config.getUsername());
        properties.put("password", config.getPassword());
        //其实还有很多配置,但是只是做这个简单用不上我就没配置
         
        //#申请连接时,空闲时间大于(timeBetweenEvictionRunsMillis),则检测连接的有效性    true
        properties.put("testWhileIdle", "true");
        //#申请连接时,检测连接的有效性(性能损耗)  false
        properties.put("testOnBorrow", "false");
        //#归还连接时,检测连接的有效性(性能损耗) false
        properties.put("testOnReturn", "false");
        return DruidDataSourceFactory.createDataSource(properties);
    }

    @Bean(name = "oracleTransactionManager")
    @Primary
    public DataSourceTransactionManager oracleTransactionManager()throws Exception{
        return new DataSourceTransactionManager(oracleDataSource());
    }

    @Bean(name = "oracleSqlSessionFactory")
    @Primary
    public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("oracleDataSource") DataSource oracleDataSource) throws Exception{
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(oracleDataSource);
        //使mybatis分页起作用,这里的分页是为了后面页面显示的
//        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
//        p.setProperty("dialect", "oracle");
        //5.1.2版本的pagehelper
        Interceptor interceptor = new PageInterceptor();
        interceptor.setProperties(p);
        Interceptor[] plugins =  new Interceptor[]{interceptor};
        sessionFactory.setPlugins(plugins);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(OracleDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }
}

如果你还想,配置其他数据源,同样在druid下建立这两个文件,一定要配置好

好了,贴一下xml文件就可以运行了

注意Id是getAll,而不是findAll

<?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.example.demo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.demo.domain.User">
        <result column="USERNAME" property="username" jdbcType="VARCHAR"/> <!--username-->
        <result column="PASSWORD" property="password" jdbcType="VARCHAR" /> <!--password-->
    </resultMap>

    <!--获取上传信息-->
    <select id="getAll"  resultMap="BaseResultMap">
        select * from user_test t
    </select>


</mapper>

到这我们就可以测一下controller了看看,能不能的到

输入

localhost:9090/test/getAll

在这里插入图片描述
在这里插入图片描述

到这就结束吧,本来还想写前端数据展示的,没想到这么麻烦,下次有时间再写了。

转发请备注出处:https://blog.csdn.net/y_yanghao/article/details/104669909
有什么问题可以留言

  • 27
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 53
    评论
实现首页动态菜单列表需要以下几步: 1. 在数据库中创建菜单表,包含菜单ID、菜单名称、菜单URL、父级菜单ID等字段。 2. 创建菜单实体类,与菜单表对应。 3. 使用Mybatis框架,在Mapper.xml文件中编写SQL语句,实现菜单的增删改查操作。 4. 在Spring Boot项目中创建菜单服务类和菜单控制器类,编写菜单的业务逻辑和接口。 5. 在页面中使用Thymeleaf模板引擎,展示菜单列表。 下面是一个简单的示例: 1. 在Oracle数据库中创建菜单表: ``` CREATE TABLE MENU ( MENU_ID NUMBER(10) PRIMARY KEY, MENU_NAME VARCHAR2(50), MENU_URL VARCHAR2(100), PARENT_ID NUMBER(10) ); ``` 2. 创建菜单实体类: ```java public class Menu { private Integer menuId; private String menuName; private String menuUrl; private Integer parentId; //getter and setter } ``` 3. 在Mapper.xml文件中编写SQL语句: ```xml <!--查询所有菜单--> <select id="findAllMenus" resultType="com.example.demo.entity.Menu"> SELECT * FROM MENU </select> ``` 4. 创建菜单服务类和菜单控制器类: ```java @Service public class MenuService { @Autowired private MenuMapper menuMapper; public List<Menu> findAllMenus() { return menuMapper.findAllMenus(); } } @Controller public class MenuController { @Autowired private MenuService menuService; @GetMapping("/") public String index(Model model) { List<Menu> menus = menuService.findAllMenus(); model.addAttribute("menus", menus); return "index"; } } ``` 5. 在页面中使用Thymeleaf模板引擎,展示菜单列表: ```html <ul> <li th:each="menu : ${menus}"> <a th:href="${menu.menuUrl}" th:text="${menu.menuName}"></a> <ul th:if="${not #lists.isEmpty(menu.children)}"> <li th:each="child : ${menu.children}"> <a th:href="${child.menuUrl}" th:text="${child.menuName}"></a> </li> </ul> </li> </ul> ```
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值