<4>springboot集成Mybatis

  1. 创建springboot项目, 在pom.xml导入相应的依赖
<dependencies>
	<!--springboot框架web项目的启动依赖-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<!--mysql驱动-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency>

	<!--mybatis整合springboot的依赖-->
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>2.0.0</version>
	</dependency>
</dependencies>

在这里发现mysql并没有指定版本号, 说明父工程已经指明, 如果想要修改可以在pom文件添加:

<properties>
	<java.version>1.8</java.version>
	<!--修改父工程mysql驱动的版本号-->
	<mysql.version>5.1.49</mysql.version>
</properties>
  1. 使用Mybatis逆向工程生成bean, mapper接口, 映射文件

    1. 测试数据库
    drop table if exists t_student;
    
    create table t_student
    (
    	id			int(10)			not null auto_increment,
    	`name`	varchar(20)	null,
    	age			int(10)			null,
    	constraint PK_T_STUDENT primary key clustered (id)
    );
    
    insert into t_student(`name`, age) VALUES
    ('zhangsan', 23),
    ('lisi', 28),
    ('wangwu', 23),
    ('Tom', 21),
    ('Jack', 55),
    ('Lucy', 27),
    ('zhaoliu', 75);
    
    1. 项目跟,目录下, 创建逆向工程文件GeneratorMapper.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
    <generatorConfiguration>
        <!-- 本地硬盘数据库驱动包 -->
        <classPathEntry
                location="D:\2ENVIRONMENT\maven\maven-repo\mysql\mysql-connector-java\5.1.49\mysql-connector-java-5.1.49.jar" />
    
        <context id="Mybatis3Context" targetRuntime="MyBatis3">
    
            <property name="javaFileEncoding" value="UTF-8"/>
    
            <commentGenerator>
                <!-- 去掉生成日期那行注释 -->
                <property name="suppressDate" value="true"/>
                <!-- 是否去除自动生成所有的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <!-- 数据库连接信息:驱动类 ,连接地址,用户名,密码-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://192.168.56.101:3306/spingboottest?serverTimezone=UTC"
                            userId="root"
                            password="123456">
            </jdbcConnection>
    
            <!-- 默认值 -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- 生成的实体类的存放位置 -->
            <javaModelGenerator targetPackage="cn.atfaith.pojo"
                                targetProject="src/main/java">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="true"/>
                <!-- 从数据库返回的值被清理前后的空格 -->
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!-- 生成的Mapper映射文件(XML)的存放位置-->
            <sqlMapGenerator targetPackage="cn.atfaith.mapper"
                             targetProject="src/main/java">
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
    
            <!-- 生成的mapper接口(JAVA文件)的存放位置-->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="cn.atfaith.mapper"
                                 targetProject="src/main/java">
                <property name="enableSubPackages" value="false"/>
            </javaClientGenerator>
    
            <!-- 指定数据库表 -->
            <table tableName="t_student"
                   domainObjectName="Student"
                   enableCountByExample="false"
                   enableDeleteByExample="false"
                   enableUpdateByExample="false"
                   enableSelectByExample="false">
            </table>
        </context>
    
    </generatorConfiguration>
    
    1. 指定mysql驱动的位置
    <!-- 本地硬盘数据库驱动包 -->
        <classPathEntry
                location="mysql驱动的位置" />
    
    1. 运行逆向工程插件
      在这里插入图片描述

结果: 运行后mapper接口默认生成6个方法

int deleteByPrimaryKey(Integer id);

int insert(Student record);

int insertSelective(Student record);

Student selectByPrimaryKey(Integer id);

int updateByPrimaryKeySelective(Student record);

int updateByPrimaryKey(Student record);
  1. 创建Controller类进行测试
@RestController
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping("/student/{id}")
    public Student queryStudentById(@PathVariable Integer id) {
        return studentService.queryStudentById(id);
    }
}
  1. 创建service接口和实现类
// StudentService接口
public interface StudentService {
    Student queryStudentById(Integer id);
}

//实现类
@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public Student queryStudentById(Integer id) {
        return studentMapper.selectByPrimaryKey(id);
    }
}
  1. 把mapper接口类交给容器

    1. 在各个mapper接口上添加@Mapper注解
    import org.apache.ibatis.annotations.Mapper;
    
    //扫描DAO接口到spring容器
    @Mapper
    public interface StudentMapper {
        int deleteByPrimaryKey(Integer id);
        int insert(Student record);
        ...  
    
    1. 在启动类上添加注解@MapperScan, 扫描mapper包
    @SpringBootApplication //开启spring配置
    @MapperScan(basePackages = "cn.atfaith.mapper") //开启扫描Mapper接口的包以及子目录
    public class Application {
    
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
    }
    
  2. application.properties中配置数据库的信息

#设置连接数据库的配置
# mysqlt5.x
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.56.101:3306/spingboottest?useUnicode=true&characterEncoding=UTF-8
 spring.datasource.username=root
spring.datasource.password=123456


# mysql8.x
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mysql8.x中url需要配置时区
spring.datasource.url=jdbc:mysql://192.168.56.101:3306/spingboottest?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
  1. 因为maven只会编译src/main/java下.java文件, xxxMapper.xml不会被编译
    解决1: 在pom文件添加

    <build>
    	<!--手动指定资源文件夹为resources-->
    	<resources>
    		<resource>
    			<directory>src/main/java</directory>
    			<includes>
    				<include>**/*.xml</include>
    			</includes>
    		</resource>
    	</resources>
    </build>
    

    解决2: 把mapper包下的xxxMapper.xml转移到resources/mapper文件夹下并在application.properties下指定xxxMapper.xml所在目录

    # 指定MyByBatis映射文件的路径
    mybatis.mapper-locations=classpath:mapper/*.xml
    

关于Mapper映射文件存放的位置的写法有以下两种:
1.将Mapper接口和Mapper映射文件存放到src/main/java同一目录下,还需要在pom文件中手动指定资源文件夹路径resources

2.将Mapper接口和Mapper映射文件分开存放

  • Mapper接口类存放到src/main/java目录下
  • Mapper映射文件存放到resources(类路径)
  • 在springboot核心配置文件中指定mapper映射文件存放到位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值