MyBatis说明:
MyBatis,原名 iBatis,由原来的 apache 迁移到了谷歌,更名为 MyBatis。MyBatis 指的就是 iBatis 3.x 后的版本。
MyBatis 是采用 ORM(Object Relational Mapping,对象关系映射)思想实现的持久化层框架,之前学习持久层解决方案
JDBC、JdbcTemplate、DBUtil都不是框架,JDBC 是一种规范,JdbcTemplate 和 DBUtil 都是简单封装了 JDBC 的工具类。
MyBatis 支持自定义 SQL、存储过程以及高级映射,免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
可以通过简单的 XML 或注解把原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)
映射为数据库中的记录。
使用 MyBatis 框架,让开发人员专注于 SQL 的编写,不再去关注注册驱动、获取连接、执行 SQL、释放资源等操作,
极大简化了持久层开发工作。
一、数据库准备
新建mysql数据库 mydb,表结构如下
create table persons( id int primary key auto_increment, phone_No varchar(50), password varchar(50), real_Name varchar(50), use_Status int )
二、创建项目
1、新建项目,名称【sprintmybates】,类型选择【Maven】
1.依赖项勾选 【Lombok】,【Sprint Web】,【MySQL Driver】,【MyBatis Framework】
项目新建完成
三、代码编写:
项目结构
1、项目配置文件
server.port=50001 #数据库配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=******* #mybatis mapper路径 mybatis.mapper-locations=classpath:mapper/*Mapper.xml #启动属性大小写(类属性与数据库字段_转换成驼峰时使用如果 phone_no->phoneNo) mybatis.configuration.map-underscore-to-camel-case=true
2、新增model类型 Person:
package com.example.sprintmybates.mode; import lombok.Data; @Data public class Person { private Long id; private String phoneNo; private String password; private String realName; private Long useStatus; }
3、新增PersonMapper接口(无需实现该接口)
package com.example.sprintmybates.mapper; import com.example.sprintmybates.mode.Person; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface PersonMapper { List<Person> findAllUser(); Person findByID(String id); int add(Person person); int update(Person person); int delete(int id); }
4、创建Mapper的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.sprintmybates.mapper.PersonMapper"> <insert id="add" > insert into persons(phone_No,password,real_Name,use_Status) values (#{phoneNo},#{password},#{realName},#{useStatus}) </insert> <update id="update"> update persons set phone_No=#{phoneNo},password=#{password},real_Name=#{realName},use_Status=#{useStatus} where id=#{id}; </update> <delete id="delete"> delete from persons where id=#{id}; </delete> <select id="findAllUser" resultType="com.example.sprintmybates.mode.Person"> select * from persons; </select> <select id="findByID" resultType="com.example.sprintmybates.mode.Person"> select * from persons where id=#{id}; </select> </mapper>
5、创建操作数据库接口 PersonServices
package com.example.sprintmybates.server; import com.example.sprintmybates.mode.Person; import java.util.List; /** * 服务接口 */ public interface PersonServices { /** * 查看全部 * @return */ List<Person> findAll(); /** * 查看单个 * @param id * @return */ Person findByID(String id); /** * 新增 * @param person * @return */ int add(Person person); /** * 修改 * @param person * @return */ int update(Person person); /** * 删除 * @param id * @return */ int delete(int id); }
6、创建对应的操作实现 PersonServicesImpl 类,内部自动注入 PersonMapper
package com.example.sprintmybates.server.Impl; import com.example.sprintmybates.mapper.PersonMapper; import com.example.sprintmybates.server.PersonServices; import com.example.sprintmybates.mode.Person; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class PersonServicesImpl implements PersonServices { @Autowired private PersonMapper personMapper; @Override public List<Person> findAll() { return personMapper.findAllUser(); } @Override public Person findByID(String id) { return personMapper.findByID(id); } @Override public int add(Person person) { return personMapper.add(person); } @Override public int update(Person person) { return personMapper.update(person); } @Override public int delete(int id) { return personMapper.delete(id); } }
7、编写PersonController类 内部自动注入 PersonMapper
package com.example.sprintmybates.controller; import com.example.sprintmybates.server.PersonServices; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.example.sprintmybates.mode.Person; import java.util.List; /** * 用户接口 */ @RestController @RequestMapping("/Person") public class PersonController { @Autowired private PersonServices personServices; /** * 查找全部 * @return */ @GetMapping("/findAll") public List<Person> findAll(){ return personServices.findAll(); } /** * 根据ID查找单个用户 * @param id * @return */ @GetMapping("/find/{id}") public Person findByID(@PathVariable("id") String id){ return personServices.findByID(id); } /** * 新增 * @param person * @return */ @PostMapping("/add") public int add(@RequestBody Person person ){ return personServices.add(person); } /** * 修改 * @param person * @return */ @PutMapping("/update") public int update(@RequestBody Person person ){ return personServices.update(person); } /** * 删除 * @param id * @return */ @DeleteMapping("/delete") public int delete(int id){ return personServices.delete(id); } }
7、在启动类中增加mapper扫描标签【@MapperScan("com.example.sprintmybates.mapper")】
package com.example.sprintmybates; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.example.sprintmybates.mapper") public class SprintmybatesApplication { public static void main(String[] args) { SpringApplication.run(SprintmybatesApplication.class, args); } }
测试结果:
1、查询全部:
2、查询单个效果:
3.新增用户:
新增以后查询:
4、修改用户
修改以后查看全部
5.删除用户:
删除以后查询全部
这样 使用 SprintBoot + mybatis 实现mySql的增删改查已经操作完成l.
辅助说明:
在Mapper类中可以使用【@Select】标签直接写SQL语句
例如:
如果写了标签,就需要把XMl里面去掉了
也可以正常操作数据库。
参考文档:
使用mybati连接MYSQL数据库_mybatis链接mysql_TT17的博客
[springboot——04]MyBatis操作MySQL_StarDream-Online的博客