springboot微软mysql_SpringBoot-MySQL(查询)

数据的传输

http请求(由用户输入)---- 由controller接收获得的数据 ---- 由mapper对数据库执行操作 ------到达sql

同时也包含了entity层,存放实体类,实现了set和get方法,与数据库的属性基本保持一致

包中包含了entity(实体类),controller,mapper

5a5ae464116d5f97b6567243d975a1af.png

增加依赖

添加了两个依赖库,分别为MySQL和Mybatis

某些依赖需要进行配置,否则会运行报错

mysql

mysql-connector-java

runtime

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.1

配置

对spring,需要设置该服务应用的名称

spring.application.name = server-mybatis

对sever,需要设置通信的端口

server.port = 8080

对Mabatis依赖,需要设置通信的网址,用户名,密码

设置MySQL的请求网址

spring.datasourse.url= jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false

格式为idbc:mysql://服务器名:端口号/数据库名?参数1&参数2

此处的数据库名指的是use database中的database

建议加上如下参数避免时区错误

serverTimezone=Asia/Shanghai&allowMultiQueries=true

user

数据库用户名(用于连接数据库)

所有版本

password

用户密码(用于连接数据库)

所有版本

useUnicode

是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true

false

1.1g

characterEncoding

当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk

false

1.1g

autoReconnect

当数据库连接异常中断时,是否自动重新连接?

false

1.1

autoReconnectForPools

是否使用针对数据库连接池的重连策略

false

3.1.3

failOverReadOnly

自动重连成功后,连接是否设置为只读?

true

3.0.12

也可以设置用户名和密码

spring.datasourse,username =root

spring.datasourse,password= ******

指定Mybatis对应实体类的包名(mapper),主要是进行映射

mybatis.typeAliasesPackage = com.Lee.connect.mapper

controller

packagecom.Lee.connect.controller;importcom.Lee.connect.mapper.UserMapper;importcom.Lee.connect.table.TableUser;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;

@Controller

@RequestMapping(value= "/")public classUserController{

@Autowired

UserMapper userMapper;

@RequestMapping(value= "/getUser")

@ResponseBodypublicObject getUser(){

TableUser user= userMapper.getUserById(2);returnuser;

}

}

@Controller表示当前类为一个控制器,加载在类上

@RequestMapping来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,其被加载在了当前方法上(也可以加载在类上)

拥有参数

value:指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

method: 指定请求的method类型, GET、POST、PUT、DELETE等

@Controller

@RequestMapping(value= "/", method =RequestMethod.GET)public classContactController {

@RequestMapping(value= "/", method =RequestMethod.GET)publicString redirectToContactPage() {return "redirect:contact";

}

@RequestMapping(value= "/admin", method =RequestMethod.GET)publicString toAdminPage() {return "admin";

}

@RequestMapping(value= "/contact", method =RequestMethod.GET)publicString toContactForOhersPage() {return "contact";

}

}

在上面的例子中,@RequestMapping加在了类和方法上

访问/的请求会被ContactController的redirectToContactPage()方法处理(加载在类上)

访问/admin的请求会被ContactController的toAdminPage()方法处理(加载在类的方法上)

其指定了不同请求对应要调用的方法

@ResponseBody加载在类的方法上,将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据

@Autowired,可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作

此处将mapper中的类方法重新定义了一个新的对象,用于后续在方法中调用(使用了mapper中定义的getuserbyid方法)

controller由以下结构组成

(头部两个注解)

定义@Controller

定义@RequestMapping

(一个类)

使用@Autowired将mapper类对象进行转换(此处就将controller和mapper连接起来)

加载@ResponseBody和@RequestMapping到方法中(此处就将controller和http请求连接起来)

方法中使用刚刚的转换中的mapper对象(实际上就是一个接口)中方法获得一个结果,将结果赋值给一个object(实际上是entity类对应的实例对象,此处就将controllrt和entity连接了起来)并进行返回

mapper

packagecom.Lee.connect.mapper;importcom.Lee.connect.table.TableUser;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Param;importorg.apache.ibatis.annotations.Select;importorg.springframework.stereotype.Component;

@Mapper

@Component(value= "UserMapper")public interfaceUserMapper {

@Select("select * from t1 where id=#{id};")

TableUser getUserById(@Param("id") Integer id);

}

mapper实际上是一个接口,controller通过继承这个接口来获得mapper中的方法进行使用

(接口只定义方法)

@Mapper定义该类是一个映射类

@component ,当类不属于各种归类的时候(不属于@Controller、@Services等的时候),可以使用@Component来标注这个类

使用value参数,参数名为当前类名,只有使用这种方式,当前的类才会被划入spring的容器中去

(使用@component才能对该类使用@Autowired)

@Select(“    ”),其内加上sql语句即可,其可以加载到方法上

此处为sql中的select关键字,同时当然也有@Delete,@Update,@Insert等等

@Param主要用于传递参数

在方法参数的前面写上@Param("参数名"),表示给参数命名,名称就是括号中的内容

例如public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);

给参数 String name 命名为aaaa,然后sql语句....where  s_name= #{aaaa} 中就可以根据aaaa得到参数值了

mapper由以下结构组成

(头部两个注解)

定义@Mapper和@@component

(一个接口)

使用@select来执行sql语句(此处就将mapper和sql服务器连接起来),将其加载到下面的方法中

(注意sql语句中的外部变量使用#{外部变量名}来操作)

定义一个方法,自定义函数名,其参数就是sql语句中使用的外部变量,返回的结果就是sql语句查询的结果

返回结果由entity对应的object接收(此处就将mapper和entity连接起来)

有时候sql语句也没有返回结果(比如删除和更新),此时就使用void

有时候sql语句会返回一个主键id(比如插入),此时就使用int来接收这个id

entity

packagecom.Lee.connect.table;importorg.apache.ibatis.annotations.Param;public classTableUser {private intid;privateString UserName;privateString PassWord;public intgetId() {returnid;

}public void setId(intid){this.id =id;

}publicString getUserName(){returnUserName;

}public voidsetUserName(String userName){

UserName=userName;

}publicString getPassWord(){returnPassWord;

}public voidsetPassWord(String passWord){

PassWord=passWord;

}

}

按照数据表的格式,为所有的字段添加set和get方法

返回这个表对应的类

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值