SpringBoot中利用MyBatis进行数据操作的示例

网友投稿 260 2023-01-21


SpringBoot中利用MyBatis进行数据操作的示例

本例http://所用环境:

SpringBoot

mysql

MyBatis

jdk1.8

Maven

首先我们先创建一个SpringBoot 项目。

数据库连接配置

##数据库连接配置(部署到哪台,对应的ip需修改)

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis?connectTimeout=1000&useSSL=false&useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver=com.mysql.jdbc.Driver

数据库中的数据

环境配好之后,下面分别介绍一下通过注解或者通过xml映射的形式这两种方法来使用MyBatis。

通过xml映射的形式

测试Bean

package com.example.demo.model;

public class User {

private int id;

private String name;

private String sex;

private int age;

public User() {

}

public User(String name, String sex, int age) {

this.name = name;

this.sex = sex;

this.age = age;

}

public User(int id, String name, String sex, int age) {

this.id = id;

this.name = name;

this.sex = sex;

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

XML形式的具体操作

将mapper定义为接口,只定义方法。具体的实现在同名的xml文件中。

package com.example.demo.mapper;

import com.example.demo.model.User;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Param;

@Mapper

public interface UserMapper {

User getByName(@Param("name") String name);

boolean insert(User user);

boolean update(@Param("name") String name, @Param("sex") String sex, @Param("age") int age);

void delete(@Param("name") String name);

}

SELECT * FROM tb_user WHERE name = #{name}

INSERT INTO tb_user(name, sex, age) VALUES(#{name}, #{sex}, #{age})

UPDATE tb_user SET sex=#{sex}, age=#{age} WHERE name=#{name}

DELETE FROM tb_user WHERE name = #{name}

两个文件通过mapper.xml文件中的 namespace 形成映射。

一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面(springboot回到对应的位置加载文件),利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。但是,有的时候我们习惯把它和Mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。

所以说,如果要将mapper.java和mapper.xml文件放在同一个位置,就需要在pom文件中指定xml文件的加载位置。

src/main/java

**/*.xml

true

src/main/resources

true

如果mapper.java和mapper.xml文件是分开放置的,则不需要以上配置。

Service服务

package com.example.demo.service;

import com.example.demo.model.User;

public interface UserService {

User getUserByName(String name);

boolean addUser(User user);

boolean updateUser(String name, String sex, int age);

void deleteUser(String name);

}

Service服务的实现类

package com.example.demo.service.impl;

import com.example.demo.mapper.UserMapper;

import com.example.demo.model.User;

import com.example.demo.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

@Service

public class UserServiceImpl implements UserService{

@Autowired

UserMapper userMapper;

@Override

public User getUserByName(String name) {

User user = userMapper.getByName(name);

if (null != user){

return user;

}

return null;

}

@Override

public boolean addUser(User user) {

return userMapper.insert(user);

}

@Override

public boolean updateUser(String name, String sex, int age) {

return userMapper.update(name, sex, age);

}

@Override

public void deleteUser(String name) {

userMapper.delete(name);

}

}

测试接口

package com.example.demo.controller;

import com.example.demo.model.User;

import com.example.demo.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class UserController {

@Autowired

UserService userService;

@RequestMapping(value = "/index", method = RequestMethod.GET)

public String index(){

User user = userService.getUserByName("gyl");

return user.getName()+"--"+user.getSex()+"--"+user.getAge();

}

}

如果一切顺利,即将输入localhost:8080/index 你将看到如下内容

通过注解的方式

package com.example.demo.mapper;

import com.example.demo.model.User;

import org.apache.ibatis.annotations.*;

@Mapper

public interface UserMapper {

@Select("select * from TB_USER where NAME = #{name}")

User getByName(@Param("name") String name);

@Insert("insert into TB_USER(NAME, SEX, AGE) values(#{name}, #{sex}, #{age})")

boolean insert(User user);

@Update("update TB_USER set SEX=#{sex}, AGE=#{age} where NAME=#{name}")

boolean update(@Param("name") String name, @Param("sex") String sex, @Param("age") int age);

@Delete("delete from TB_USER where NAME = #{name}")

void delete(@Param("name") String name);

}

如果一切顺利,即将输入localhost:8080/index 你将看到如下内容


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

上一篇:东北服装研发管理平台(东北服装研发管理平台官网)
下一篇: 判断是否实现接口(如何判断接口调用哪个类)
相关文章

 发表评论

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