~/Desktop/MyBatisXMLDemo$ tree -L 8.├── GroceryDemo.iml├── pom.xml└── src└── main├── java│ └── com│ └── wong│ ├── controller│ │ └── PersonController.java│ ├── MainApplication.java│ └── mybatis│ ├── bean│ │ └── Person.java│ ├── mapper│ │ └── PersonMapper.java│ └── service│ ├── PersonServiceImpl.java│ └── PersonService.java└── resources├── config│ └── application.yml└── mybatis└── mapper└── PersonMapper.xml
2.1.pom.xml添加依赖
主要的依赖:
● springboot web的起步依赖
● mysq驱动
● mybatis框架
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wong</groupId><artifactId>xmlDemo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><java.version>1.8</java.version></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.6.RELEASE</version><relativePath/></parent><dependencies><!--springboot开发web项目的起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 去掉内嵌tomcat --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><!--mysql的jdbc驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--MyBatis整合到springboot项目--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><!--日志框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><!--jetty容器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies><build><finalName>Demo</finalName><plugins><!--maven插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

package com.wong.mybatis.bean;public class Person{private int id;private String name;private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "Person{id:"+this.id+",name:"+this.name+",age:"+this.age+"}";}}
2.4.创建映射器
package com.wong.mybatis.mapper;import com.wong.mybatis.bean.Person;import java.util.List;public interface PersonMapper {// 增加int insert(Person person);// 删除int deleteByPrimaryKey(Integer id);// 修改int updateByPrimaryKey(Person person);// 查询Person selectByPrimaryKey(Integer id);// 方法名就是 xml中的idList<Person> selectAllPerson();}/*** 下面被注释的部分是使用注解完成映射的*///@Mapper//public interface PersonMapper {// // 增加// @Insert("insert into person(id,name,age) values(#{id},#{name},#{age})")// int insert(Person person);// // 删除// @Delete("delete from person where id = #{id}")// int deleteByPrimaryKey(Integer id);// // 修改// @Update("update person set name = #{name},age = #{age} where id = #{id}")// int updateByPrimaryKey(Person person);// // 查询// @Select("select id,name,age from person where id=#{id}")// Person selectByPrimaryKey(Integer id);// @Select("select id,name,age from person")// List<Person> selectAllPerson();//}

因为我们在application.yml指定了SQL映射的xml文件的位置是classpath:mybatis/mapper/*.xml因此我在项目的resources目录下创建目录mybatis/mapper,并在其中添加映射器对应的SQL映射文件PersonMapper.xml:
一般来说,为了方便代码的阅读与管理,我们都会将SQL的映射文件的命名与映射器类的名称保持一致。事实上,你可以定义任意名字。这对绑定过程影响不大,因为它最终是根据mapper标签里的命名空间namespace来进行绑定的。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wong.mybatis.mapper.PersonMapper"><insert id="insert">insert into person(id,name,age)values(#{id},#{name},#{age})</insert><delete id="deleteByPrimaryKey">delete from person where id = #{id}</delete><update id="update">update personset name = #{name},age = #{age}where id = #{id}</update><select id="selectByPrimaryKey" resultType="com.wong.mybatis.bean.Person">select * from person where id = #{id}</select><select id="selectAllPerson" resultType="com.wong.mybatis.bean.Person">select * from person</select></mapper>

2.6.在启动类添加映射器扫描注解
如果使用注解进行sql与接口绑定的,那么只需要在mapper映射器上使用@Mapper注解就可以进行绑定,但是现在映射器类与SQL的定义都在不同的文件里,因此需要通过某种途径将两者绑定起来。解决方式:
1.application.yml里指定了SQL映射文件的路径
2.在SpringBoot启动类里添加@MapperScan注解,当应用启动时,就会根据这些信息进行扫描并进行绑定。

package com.wong;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.wong.mybatis.mapper") // 映射器类的包路径public class MainApplication {public static void main(String[] args) {SpringApplication.run(MainApplication.class, args);}}
2.7.创建服务类
服务类是专门用来完成复杂业务的地方。
package com.wong.mybatis.service;import com.wong.mybatis.bean.Person;import java.util.List;public interface PersonService {// 增加int insertPerson(Person person);// 删除int deletePersonById(Integer id);// 修改int updatePersonById(Person person);// 查询Person selectPersonById(Integer id);List<Person> selectAllPerson();}


要使用@Service注解,让Spring初始化它,并将其放入Spring容器中。
package com.wong.mybatis.service;import com.wong.mybatis.bean.Person;import com.wong.mybatis.mapper.PersonMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class PersonServiceImpl implements PersonService{@Autowiredprivate PersonMapper personMapper;@Overridepublic int insertPerson(Person person) {return personMapper.insert(person);}@Overridepublic int deletePersonById(Integer id) {return personMapper.deleteByPrimaryKey(id);}@Overridepublic int updatePersonById(Person person) {return personMapper.updateByPrimaryKey(person);}@Overridepublic Person selectPersonById(Integer id) {return personMapper.selectByPrimaryKey(id);}@Overridepublic List<Person> selectAllPerson() {return personMapper.selectAllPerson();}}

3.1.运行项目
~/Desktop/MyBatisXMLDemo$ mvn clean spring-boot:run

3.2.测试结果


Demo下载(https://github.com/wongkyunban/MyBatisXMLDemo)
文章转载自WTech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。










