Mybatis里面使用接口对应映射XML文件,我们先搞定在IDEA中生成我们想要的XML文件这件事。
在IDEA的Settings中File and Code Templates,新增一个XML模板,方便以后我们每次new文件时直接选择。模板内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
在application.properties中加入Mybatis配置:
#数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/chapter5?serverTimezone=Asia/Shanghai&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.tomcat.max-idle=10
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.initial-size=5
#mybatis配置
mybatis.mapper-locations=classpath:mappers/*.xml
写个简单的查询测试下:数据库建表语句:
create table spring_boot_user(id int primary key not null auto_increment,name varchar(20) not null ,description varchar(256));
insert into spring_boot_user values (1,'麦克-格雷迪','这个人很懒,什么都没有留下...');
insert into spring_boot_user values (2,'春丽','爱玩游戏...');
mapper接口:
package com.kane.springboot002.data.mapper;
import com.kane.springboot002.aop.bean.User;
/**
* 〈一句话功能简述〉<br>
* 〈用户持久层接口〉
*
* @author Kane
* @create 2019/5/30
* @since 1.0.0
*/
public interface UserMapper {
User findUserById(int id);
}
记住在启动项中添加对mapper接口包的扫描:
package com.kane.springboot002;
import com.kane.springboot002.aop.aspect.MyAspect;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.transaction.annotation.Transactional;
@SpringBootApplication
@MapperScan("com.kane.springboot002.data.mapper")
public class Springboot002Application {
//定义切面
@Bean(name = "myAspect")
public MyAspect initMyAspect(){
return new MyAspect();
}
public static void main(String[] args) {
SpringApplication.run(Springboot002Application.class, args);
}
}
xml文件中写好一个select标签语句:
<select id="findUserById" resultType="com.kane.springboot002.aop.bean.User">
select
id,name,description
from
spring_boot_user
where
id=#{id}
</select>
测试类:
package com.kane.springboot002.service;
import com.kane.springboot002.aop.bean.User;
import com.kane.springboot002.data.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* 〈一句话功能简述〉<br>
* 〈s〉
*
* @author Kane
* Date: 2019/5/30 15:04
* @since 1.0.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
private Logger logger = LoggerFactory.getLogger(UserMapperTest.class);
@Test
public void userMapperTest(){
User user = userMapper.findUserById(1);
logger.info(""+user);
}
}
测试结果:
2019-05-30 15:13:46 INFO (UserMapperTest.java:30)- User{id=1, name='麦克-格雷迪', description='这个人很懒,什么都没有留下...'}