springboot学习日记(六):MyBatis

目录

一、基本框架

1.导入MyBatis和mysql依赖包

2.在resources文件夹下新建mappers文件夹,并添加PersonMapper类

3.在application.properties中配置连接,数据库端口、名称、用户名、密码和包名改成自己的,否则连接不到数据库

4.下载工具MyBatisX

二、连接数据库并查询

1.dao层新建PersonMapper接口

2.在mappers文件夹下新建PersonMapper.xml

3.service层新建PersonService接口,新建impl文件夹,并在impl文件夹下新建PersonServiceImpl实现类

4.controller层新建PersonController类

5.在templates文件夹下新建personlist.html

6.像springboot(四)中一样打开mysql

7.运行:数据库数据访问成功​编辑

三、案例练习 -- 增加、删除、修改用户

总框架:

1.在dao层PersonMappe接口类中添加代码

2.在PersonMapper.xml中添加代码

3.在PersonService接口类

4.在PersonServiceImpl实现类

5.修改perosnlist.xml , 并在templates文件夹下新建addPerson.html 、updateperson.html

perosnlist.xml:

addPerson.html:

updateperson.html

6.修改PersonController类

7.运行:

浏览器手动输入:   http://localhost:8080/personlist

点击  增加页面   --> 跳转到:http://localhost:8080/addperson

提交-->跳转回用户列表

点击   更新用户  -->跳转到:  ​编辑

提交-->跳转回用户列表  同时数据修改成功

点击  删除用户 -->  成功删除用户

四、resultmap属性


mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

mybatis解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

mybatis提供xml标签,支持编写动态sql。

Mybatis的功能架构分为三层。

一、基本框架

1.导入MyBatis和mysql依赖包

<!--		引入mybatis包-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!--		引入mysql包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

2.在resources文件夹下新建mappers文件夹,并添加PersonMapper类

3.在application.properties中配置连接,数据库端口、名称、用户名、密码和包名改成自己的,否则连接不到数据库

#更改端口号
#server.port=8086
#变更路径
#server.servlet.context-path=/springboot

#引入数据集(图片音频视频什么的)-->静态资源访问
spring.web.resources.static-locations=classpath:/img

# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=你自己的数据库名称
spring.datasource.password=你自己的数据库密码

#mybatis配置 sql写到配置文件
#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件 -- sql配置xml文件
mybatis.mapper-locations=classpath:mapper/*.xml

#指定Mybatis的实体目录(实体类包)
mybatis.type-aliases-package=com.lbcjxx.springboot.pojo

#数据修改的日志记录
logging.level.com.wangyang.springboot = debug

4.下载工具MyBatisX

-->后面建好框架会出现小鸟:

二、连接数据库并查询

总框架:

1.dao层新建PersonMapper接口

package com.lbcjxx.springboot.dao;


import com.lbcjxx.springboot.pojo.Person;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
//mybatis dao层实现类写到配置文件中
@Mapper
public interface PersonMapper {
    public List<Person> findAllPerson();
}


2.在mappers文件夹下新建PersonMapper.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.lbcjxx.springboot.dao.PersonMapper">
    <!--    id 接口中方法的名字 resultType返回值的类型  集合对象 可以省略集合-->
    <select id="findAllPerson" resultType="com.lbcjxx.springboot.pojo.Person">
        select * from class
    </select>
</mapper>

3.service层新建PersonService接口,新建impl文件夹,并在impl文件夹下新建PersonServiceImpl实现类

package com.lbcjxx.springboot.service;

import com.lbcjxx.springboot.pojo.Person;

import java.util.List;

public interface PersonService {
    public List<Person> findAllPerson();
}





package com.lbcjxx.springboot.service.impl;

import com.lbcjxx.springboot.dao.PersonMapper;
import com.lbcjxx.springboot.pojo.Person;
import com.lbcjxx.springboot.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PersonServiceImpl implements PersonService {
    @Autowired
    PersonMapper personMapper;

    @Override
    public List<Person> findAllPerson(){
        return personMapper.findAllPerson();
    }
}


4.controller层新建PersonController类

package com.lbcjxx.springboot.controller;


import com.lbcjxx.springboot.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PersonController {
    @Autowired
    PersonService personService;
    @RequestMapping("personlist")
    public String personlist(Model model){
        model.addAttribute("personlist",personService.findAllPerson());
        return "personlist.html";
    }

}

5.在templates文件夹下新建personlist.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>用户列表</h1>
<table border="1">
  <tr>
    <td>用户id</td>
    <td>用户年龄</td>
    <td>用户姓名</td>
  </tr>
  <tr th:each="person:${personlist}">
    <td th:text="${person.id}">用户id</td>
    <td th:text="${person.age}">用户年龄</td>
    <td th:text="${person.name}">用户姓名</td>
  </tr>
</table>
</body>
</html>

6.像springboot(四)中一样打开mysql

7.运行:数据库数据访问成功

三、案例练习 -- 增加、删除、修改用户

总框架:

1.在dao层PersonMappe接口类中添加代码

package com.lbcjxx.springboot.dao;


import com.lbcjxx.springboot.pojo.Person;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
//mybatis dao层实现类写到配置文件中
@Mapper
public interface PersonMapper {
    public List<Person> findAllPerson();
//删除用户
    public int deletePersonById(Integer id);
//增加用户
    public int addPerson(Person person);
//修改(更新)用户
    public int updatePerson(Person person);


}


2.在PersonMapper.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.lbcjxx.springboot.dao.PersonMapper">
    <!--    id 接口中方法的名字 resultType返回值的类型  集合对象 可以省略集合-->
    <select id="findAllPerson" resultType="com.lbcjxx.springboot.pojo.Person">
        select * from class
    </select>

    
<!--    删除用户-->
    <delete id="deletePersonById" parameterType="Integer">
        delete from class where id=#{id}
    </delete>

    <!--&lt;!&ndash;如果参数是对象类型 对象类型可以省略&ndash;&gt;-->
<!--    添加用户-->
    <insert id="addPerson" parameterType="com.lbcjxx.springboot.pojo.Person">
        insert into class(name,age) values (#{name},#{age})
    </insert>

<!--    修改(更新)用户-->
    <update id="updatePerson" parameterType="com.lbcjxx.springboot.pojo.Person">
        update class
        set name=#{name},age=#{age}
        where id=#{id}
    </update>





</mapper>

3.在PersonService接口类

package com.lbcjxx.springboot.service;

import com.lbcjxx.springboot.pojo.Person;

import java.util.List;

public interface PersonService {
    public List<Person> findAllPerson();

//    删除用户
    public int deletePersonById(Integer id);

//    增加用户
    public int addPerson(Person person);

//    修改(更新)用户
    public int updatePerson(Person person);


}

4.在PersonServiceImpl实现类

package com.lbcjxx.springboot.service.impl;

import com.lbcjxx.springboot.dao.PersonMapper;
import com.lbcjxx.springboot.pojo.Person;
import com.lbcjxx.springboot.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PersonServiceImpl implements PersonService {
    @Autowired
    PersonMapper personMapper;

    @Override
    public List<Person> findAllPerson(){
        return personMapper.findAllPerson();
    }

//    删除用户
    @Override
    public int deletePersonById(Integer id) {
        return personMapper.deletePersonById(id);
    }
    
//  增加用户
    @Override
    public int addPerson(Person person) {
        return personMapper.addPerson(person);
    }

//    修改(更新)用户
    @Override
    public int updatePerson(Person person) {
        return personMapper.updatePerson(person);
    }


}


5.修改perosnlist.xml , 并在templates文件夹下新建addPerson.html 、updateperson.html

perosnlist.xml:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>用户列表</h1>
<a th:href="@{/addperson}">增加页面</a>
<table border="1">
  <tr>
    <td>用户id</td>
    <td>用户年龄</td>
    <td>用户姓名</td>
    <td>删除</td>
    <td>更新</td>
  </tr>
  <tr th:each="person:${personlist}">
    <td th:text="${person.id}">用户id</td>
    <td th:text="${person.age}">用户年龄</td>
    <td th:text="${person.name}">用户姓名</td>
    <th>
      <a th:href="@{'/deletepersonbyid?id='+${person.id}}">删除用户</a>
    </th>
    <th>
      <a th:href="@{/updateperson(id=${person.id},age=${person.age},name=${person.name})}">更新用户</a>
    </th>

  </tr>
</table>
</body>
</html>

addPerson.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>增加用户</h1>
<form th:action="@{/addpersoncommit}" method="post">
    <div>用户名:<input name="name"></div>
    <div>年龄:<input name="age"></div>
    <div><input type="submit" value="提交"></div>
</form>
</body>
</html>

updateperson.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>
    更新页面
</h1>
<form th:action="@{/updatepersoncommit}" method="post">
    <div>id:<input name="id" th:value="${id}"></div>
    <div>用户名:<input name="name" th:value="${name}"></div>
    <div>年龄:<input name="age" th:value="${age}"></div>
    <div><input type="submit" value="提交"></div>
</form>
</body>
</html>

6.修改PersonController类

package com.lbcjxx.springboot.controller;


import com.lbcjxx.springboot.pojo.Person;
import com.lbcjxx.springboot.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PersonController {
    @Autowired
    PersonService personService;
    
//    展示数据库用户列表
    @RequestMapping("personlist")
    public String personlist(Model model){
        model.addAttribute("personlist",personService.findAllPerson());
        return "personlist.html";
    }

//    删除用户
    @RequestMapping("deletepersonbyid")
    public String deletePersonbyid(int id){
        personService.deletePersonById(id);
        return "redirect:/personlist";
    }

//    添加用户
    @RequestMapping("addperson")
    public String addperson(){

        return "addPerson.html";
    }
    @RequestMapping("addpersoncommit")
    public String addpersoncommit(Person person){
        personService.addPerson(person);
        return "redirect:/personlist";
    }

//    修改(更新)用户
    @RequestMapping("updateperson")
    public String updateperson(Model model,Person person){
        model.addAttribute("id",person.getId());
        model.addAttribute("age",person.getAge());
        model.addAttribute("name",person.getName());
        return "updateperson.html";
    }

    @RequestMapping("updatepersoncommit")
    public String updatepersoncommit(Person person){
        personService.updatePerson(person);
        return "redirect:/personlist";
    }

}

7.运行:

浏览器手动输入:   http://localhost:8080/personlist

点击  增加页面   --> 跳转到:http://localhost:8080/addperson

提交-->跳转回用户列表

点击   更新用户  -->跳转到:  

提交-->跳转回用户列表  同时数据修改成功

点击  删除用户 -->  成功删除用户

四、resultmap属性

数据库字段和实体类字段不一致,进行手工配置

修改PersonMapper.xml

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值