文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring Boo如何t连接MySql数据库

2023-05-30 23:34

关注

这篇文章将为大家详细讲解有关Spring Boo如何t连接MySql数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Spring Boot有两种方法与数据库建立连接,一种是使用JdbcTemplate,另一种集成Mybatis,下面分别为大家介绍一下如何集成和使用这两种方式。

使用JdbcTemplate

<dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-jdbc</artifactId></dependency>

在resource文件夹下添加application.properties配置文件并输入数据库参数,内容如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.max-idle=10spring.datasource.max-wait=1000spring.datasource.min-idle=5spring.datasource.initial-size=5server.port=8012server.session.timeout=10server.tomcat.uri-encoding=UTF-8

新建Controller类测试数据库连接,实例如下:

package com.example.demo;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/mydb")public class DBController {  @Autowired  private JdbcTemplate jdbcTemplate;    @RequestMapping("/getUsers")  public List<Map<String, Object>> getDbType(){    String sql = "select * from appuser";    List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);    for (Map<String, Object> map : list) {      Set<Entry<String, Object>> entries = map.entrySet( );        if(entries != null) {          Iterator<Entry<String, Object>> iterator = entries.iterator( );          while(iterator.hasNext( )) {          Entry<String, Object> entry =(Entry<String, Object>) iterator.next( );          Object key = entry.getKey( );          Object value = entry.getValue();          System.out.println(key+":"+value);        }      }    }    return list;  }    @RequestMapping("/user/{id}")  public Map<String,Object> getUser(@PathVariable String id){    Map<String,Object> map = null;        List<Map<String, Object>> list = getDbType();        for (Map<String, Object> dbmap : list) {            Set<String> set = dbmap.keySet();            for (String key : set) {        if(key.equals("id")){            if(dbmap.get(key).equals(id)){            map = dbmap;          }        }      }    }        if(map==null)      map = list.get(0);    return map;  }  }

运行App输入地址输出数据库数据。

集成Mybatis

 添加mybatis依赖,在pom.xml文件中增加如下:

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

在resource文件夹下添加application.properties配置文件并输入数据库参数,如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.max-idle=10spring.datasource.max-wait=1000spring.datasource.min-idle=5spring.datasource.initial-size=5server.port=8012server.session.timeout=10server.tomcat.uri-encoding=UTF-8

依次添加mapper的接口类和xml文件,类分别如下:
AppMessageMapper.java

package com.example.demo.mapper;import java.util.List;import com.example.demo.bean.AppMessage;public interface AppMessageMapper {  int deleteByPrimaryKey(String id);  int insert(AppMessage record);  int insertSelective(AppMessage record);  AppMessage selectByPrimaryKey(String id);  int updateByPrimaryKeySelective(AppMessage record);  int updateByPrimaryKey(AppMessage record);    List<AppMessage> selectAll();  List<AppMessage> getMessById(String id);}

AppMessageMapper.xml

<?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.AppMessageMapper" > <resultMap id="BaseResultMap" type="com.example.demo.bean.AppMessage" >  <id column="id" property="id" jdbcType="VARCHAR" />  <result column="message" property="message" jdbcType="VARCHAR" />  <result column="senddate" property="senddate" jdbcType="TIMESTAMP" /> </resultMap>  <sql id="Base_Column_List" >  id, message, senddate </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >  select   <include refid="Base_Column_List" />  from appuser_message  where id = #{id,jdbcType=VARCHAR} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >  delete from appuser_message  where id = #{id,jdbcType=VARCHAR} </delete> <insert id="insert" parameterType="com.example.demo.bean.AppMessage" >  insert into appuser_message (id, message, senddate   )  values (#{id,jdbcType=VARCHAR}, #{message,jdbcType=VARCHAR}, #{senddate,jdbcType=TIMESTAMP}   ) </insert> <insert id="insertSelective" parameterType="com.example.demo.bean.AppMessage" >  insert into appuser_message  <trim prefix="(" suffix=")" suffixOverrides="," >   <if test="id != null" >    id,   </if>   <if test="message != null" >    message,   </if>   <if test="senddate != null" >    senddate,   </if>  </trim>  <trim prefix="values (" suffix=")" suffixOverrides="," >   <if test="id != null" >    #{id,jdbcType=VARCHAR},   </if>   <if test="message != null" >    #{message,jdbcType=VARCHAR},   </if>   <if test="senddate != null" >    #{senddate,jdbcType=TIMESTAMP},   </if>  </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.example.demo.bean.AppMessage" >  update appuser_message  <set >   <if test="message != null" >    message = #{message,jdbcType=VARCHAR},   </if>   <if test="senddate != null" >    senddate = #{senddate,jdbcType=TIMESTAMP},   </if>  </set>  where id = #{id,jdbcType=VARCHAR} </update> <update id="updateByPrimaryKey" parameterType="com.example.demo.bean.AppMessage" >  update appuser_message  set message = #{message,jdbcType=VARCHAR},   senddate = #{senddate,jdbcType=TIMESTAMP}  where id = #{id,jdbcType=VARCHAR} </update>  <select id="selectAll" resultMap="BaseResultMap">  select      id, message, senddate  from appuser_message  order by senddate asc </select>  <select id="getMessById" resultMap="BaseResultMap" parameterType="java.lang.String">  select       id, message, senddate  from     appuser_message     where id = #{id,jdbcType=VARCHAR}  order by senddate asc  </select> </mapper>

AppMessage.java

package com.example.demo.bean;import java.util.Date;public class AppMessage {  private String id;  private String message;  private Date senddate;  public String getId() {    return id;  }  public void setId(String id) {    this.id = id == null ? null : id.trim();  }  public String getMessage() {    return message;  }  public void setMessage(String message) {    this.message = message == null ? null : message.trim();  }  public Date getSenddate() {    return senddate;  }  public void setSenddate(Date senddate) {    this.senddate = senddate;  }}

AppMessageService.java

package com.example.demo.service;import java.util.ArrayList;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.example.demo.bean.AppMessage;import com.example.demo.mapper.AppMessageMapper;@Servicepublic class AppMessageService {    @Autowired  private AppMessageMapper mapper;    public List<AppMessage> getMessage(){     List<AppMessage> list = new ArrayList<AppMessage>();     list.add(mapper.selectByPrimaryKey("xtt"));     //list = mapper.selectAll();     return list;  }    public List<AppMessage> getAllMessage(){     List<AppMessage> list = new ArrayList<AppMessage>();     list = mapper.selectAll();     return list;  }  public int addMessage(AppMessage appMessage) {    return mapper.insert(appMessage);  }  public List<AppMessage> getMessageById(String id) {    return mapper.getMessById(id);  }  public int delMessage(String id) {    return mapper.deleteByPrimaryKey(id);  }}

APPMessageController.java

package com.example.demo.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import com.example.demo.bean.AppMessage;import com.example.demo.service.AppMessageService;@RestController@RequestMapping("/appmessage")public class APPMessageController {  @Autowired  private AppMessageService service;  @RequestMapping("/getThree")  public List<AppMessage> getThreeForMessage(){        List<AppMessage> list = service.getMessage();        return list;  }    @RequestMapping("/getAll")  public List<AppMessage> getAllMessage(){        List<AppMessage> list = service.getAllMessage();    int num = list.size();    if(null!=list && num>3){      for (int i = 0; i < num-3; i++) {        list.remove(0);      }    }    return list;  }  @RequestMapping("/getByID")  public List<AppMessage> getMessageById(@RequestParam("id") String id){    List<AppMessage> list = service.getMessageById(id);    int num = list.size();    if(null!=list && num>5){      for (int i = 0; i < num-5; i++) {        list.remove(0);      }    }    return list;  }    @RequestMapping(value = "/add",method = RequestMethod.POST)  // 或者采用@PostMapping("/add")方法,更加节省代码的编写量  public int addMessage(@RequestBody AppMessage appMessage){    return service.addMessage(appMessage);  }    @RequestMapping(value="/delMessageById",method=RequestMethod.POST)   // 或者采用@PostMapping("/delMessageById")方法,更加节省代码的编写量  public int delMessageById(@RequestParam("id") String id){      return service.delMessage(id);  }}

问题描述?

SpringBoot扫描包提示找不到mapper的问题,异常信息:
Consider defining a bean of type in your configuration

分析原因

Spring Boot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描,“Application类”是指Spring Boot项目入口类。如果Application类所在的包为:com.yoodb.blog,则只会扫描com.yoodb.blog包及其所有子包,如果service或dao所在包不在com.yoodb.blog及其子包下,则不会被扫描。

解决方法

方式一:使用注解@ComponentScan(value=”com.yoodb.blog”),其中,com.yoodb.blog为包路径。
方式二:将启动类Application放在上一级包中,注意的是Application启动类必须要保证在包的根目录下。

关于“Spring Boo如何t连接MySql数据库”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯