Mybatis作为后端持久层框架,在互联网大厂中应用广泛,所以掌握Mybatis,可谓是必备的。最近准备系统得复习一下Mybatis框架,所以博客会更几期关于Mybatis得文章,如果觉得看完有收获,希望、。如果觉得写得不好,欢迎评论区指正。 安装mysql,可以参考 安装MySQL mysql记得给远程用户分配权限,参考mysql 8 设置允许远程连接 You are not allowed to create a user with GRANT 配置SpringBoot开发环境,参考VS Code打造一个完美的Springboot开发环境 创建一个学生表(终端, 代码动态创建均可) 修改pom.xml,获取Mybatis、MySQL相关依赖 在 添加bean类(对应与数据库属性列) 添加mapper接口代码 添加mapper接口对应的xml格式文件 一定注意路径对应,com.test.demo.mapper.StudentMapper。 这里只写了插入,下文会补充删除、更新、查询 最后的controller代码文件 mapper接口 对应xml文件 参数的类型一定是完整的包名,参数名写ben类的属性名 在实际应用开发过程中,我们往往需要写复杂的 SQL 语句,需要拼接,而拼接SQL语句又稍微不注意,由于引号,空格等缺失可能都会导致错误。Mybatis提供了动态SQL,也就是可以根据用户提供的参数,动态决定查询语句依赖的查询条件或SQL语句的内容。 if、foreach关键字用法 mapper接口 对应的xml格式mapper文件SpringBoot配置Mybatis:详细易懂
前期准备工作
create table(Sno int(10) primary key, Sname varchar(10), Sage int(5));
Mybatis相应配置
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> <scope>compile</scope> </dependency>
application.properties
文件中配置Mybatis连接环境mybatis.type-aliases-package=com.test.demo #mysql驱动 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #远程数据库链接 serverTimezone不可少 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC #MySQL数据库用户名、密码 spring.datasource.username=root spring.datasource.password=xxxxx #xml格式的mapper文件位置 mybatis.mapper-locations=classpath:/mapper/*.xml
编写相应代码
package com.test.demo; public class Student { public int sNo; public String sName; public int sAge; public Student(int sNo, String sName, int sAge) { this.sNo = sNo; this.sName = sName; this.sAge = sAge; } //Getter、Setter方法,我省略了,你在代码中别省略 }
package com.test.demo.mapper; import com.test.demo.Student; public interface StudentMapper { void insert(Student student); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.test.demo.mapper.StudentMapper"> <insert id="insert" parameterType="com.test.demo.Student" > INSERT INTO student (Sno,Sname,Sage) VALUES (#{sNo},#{sName},#{sAge}) </insert> </mapper>
package com.test.demo.controller; import org.springframework.web.bind.annotation.RestController; import com.test.demo.Student; import com.test.demo.mapper.StudentMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HomeController { @Autowired private StudentMapper studentMapper; @RequestMapping("/") public String index() throws Exception { studentMapper.insert(new Student(1, "天宇", 24)); return "OK"; } }
文件结构和结果
增删查改
package com.test.demo.mapper; import com.test.demo.Student; public interface StudentMapper { void insert(Student student); void delete(String sNo); Student selectByNumber(Integer sNo); void updateName(Student student); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.test.demo.mapper.StudentMapper"> <!--插入操作--> <insert id="insert" parameterType="com.test.demo.Student" > INSERT INTO student (Sno,Sname,Sage) VALUES (#{sNo},#{sName},#{sAge}) </insert> <!--删除操作--> <delete id="delete" parameterType="java.lang.String"> DELETE FROM student where Sno = #{sNo}; </delete> <!--查询操作--> <select id="selectByNumber" parameterType="java.lang.Integer" resultType="com.test.demo.Student"> SELECT * FROM student where Sno = #{sNo} </select> <!--更新操作--> <update id="updateName" parameterType="com.test.demo.Student"> UPDATE student SET Sname = #{sName} where Sno = #{sNo} </update> </mapper>
Mybatis 动态SQL
public interface StudentMapper { List<Student> findByCondition(String sName, Integer sAge); List<Student> selectByNumberList(List<Integer> list); }
<select id="findByCondition" resultType="com.test.demo.Student" parameterType="map"> select * from student <!--名字不为空,则限定名字--> <!--年龄参数不为空,则限定查询结果的年龄--> <where> <if test="sName!=null"> and Sname = #{sName} </if> <if test="sAge!=null"> and Sage < #{sAge} </if> </where> </select> <select id="selectByNumberList" resultType="com.test.demo.Student" parameterType="list"> select * from student <where> Sno in <foreach item="item" collection="list" separator="," open="(" close=")" index=""> #{item} </foreach> </where> </select>
参考文章
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算