SpringBoot Mybatis integration (annotated version)

SpringBoot Mybatis integration (annotated version), SpringBoot integrated Mybatis (annotated version)

 

================================

©Copyright Sweet Potato Yao April 8, 2018

http://fanshuyao.iteye.com/

 

1. Introduce the Mybatis dependency package:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

 Database connection dependencies:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
		
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.9</version>
</dependency>

 

2. Establish corresponding tables and Java entities (the process is omitted)

3. Establish the Mapper corresponding to the entity (such as UserMapper)

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;

import com.lqy.springboot.bean.User;

@Mapper
public interface UserMapper {

	@Select("select * from user where user_id = #{userId}")
	public User getById(Integer userId);
	
	@Options(useGeneratedKeys=true,keyProperty="userId")
	@Insert("insert into user(user_name,age) values(#{userName},#{age})")
	public Integer save(User user);	
}

 

Note: To use the annotation version, you need to add the @Mapper annotation to the class so that SpringBoot can automatically scan it.

@Mapper

 Question: If there are many Mapper interfaces, can it be scanned at one time?

have.

Add a comment to the program startup entry:

@MapperScan(basePackages= {"com.lqy.springboot.mapper"})

details as follows:

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//Mybatis automatically scans the package
//@MapperScan(basePackages= {"com.lqy.springboot.mapper"})
@SpringBootApplication
public class SpringbootDatasourceApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootDatasourceApplication.class, args);
	}
}

 This can solve the trouble of adding annotations to multiple Mappers.

 

4. Test Mapper

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.lqy.springboot.bean.User;
import com.lqy.springboot.mapper.UserMapper;

@RestController
public class UserController {

	@Autowired
	private UserMapper userMapper;
	
	@RequestMapping("/getUser")
	public User getUser(Integer userId) {
		if(userId == null) {
			userId = 1;
		}
		return userMapper.getById(userId);
	}
	
	@RequestMapping("/saveUser")
	public User saveUser(User user) {
		userMapper.save(user);
		return user;
	}
	
}

 

五、SpringBoot Mybatis增加驼峰命名规则:

因为是注解版,没有配置文件,所以SpringBoot增加驼峰命名需要增加一个自定义配置类(ConfigurationCustomizer):

import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * mybatis 注解版 
 *
 */
@Configuration
public class MybatisConfig {

	@Bean
	public ConfigurationCustomizer configurationCustomizer() {
		return new ConfigurationCustomizer() {

			@Override
			public void customize(org.apache.ibatis.session.Configuration configuration) {
				configuration.setMapUnderscoreToCamelCase(true);//设置驼峰命名规则
			}
		};
	}
}

 

 

 

================================

©Copyright 蕃薯耀 2018年4月8日

http://fanshuyao.iteye.com/

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326069939&siteId=291194637