SpringBoot系列三:整合mybatis注解

这节将实现springboot整合mybatis,本文中将使用mybatis注解实现增删改查。

关键注解词 : 

@Insert : 插入sql , 和xml insert sql语法完全一样
@Select : 查询sql,  和xml select sql语法完全一样
@Update : 更新sql,  和xml update sql语法完全一样
@Delete : 删除sql,  和xml delete sql语法完全一样
@Param :  入参
@Results : 返回结果集合
@Result : 返回结果 数据库字段与对象进行匹配

此项目的实现是建立在之前创建的项目之上,接下来开始整合。

1.引入数据库相关的jar包以及mybatis jar包


		
			org.springframework.boot
			spring-boot-starter-jdbc
		
		
			mysql
			mysql-connector-java
		
		
			com.alibaba
			druid
			1.0.29
		
        
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
			1.3.2
		

2.application.properties添加相关配置

 SpringBoot会自动加载application.properties配置文件,会读取spring.datasource.*相关的配置,数据源会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中会扫描的model实体类路径

spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=*******

3.在启动类上加注解

@MapperScan("com.jjl.springboot.initializr.mapper") 能够扫描项目中的mapper路径。
/**
 * 指定mapper位置
 * @author jjl
 */
@MapperScan("com.jjl.springboot.initializr.mapper")
@SpringBootApplication
public class SpringbootInitializrApplication {

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

}

4.添加mapper,只做了查询的接口

/**
 * @author :jljiang
 * @date :Created in 2019/5/17 8:19 PM
 * @description:
 */
public interface UserMapper {
    /**
     * 获取所有用户列表
     * @return
     */
    @Results({
            @Result(property = "name",column = "name"),
            @Result(property = "age",column = "age")
    })
    @Select("select * from user ")
    List getUserList ();
}

5.service层实现

/**
 * @author :jljiang
 * @date :Created in 2019/5/18 9:42 AM
 * @description:用户实现类
 */
@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;

    /**
     * 获取用户列表
     * @return
     */
    @Override
    public List getUserList() {
        return userMapper.getUserList();
    }
}

6.展现层

/**
 * @author :jljiang
 * @date :Created in 2019/5/18 9:50 AM
 * @description:用户展示层
 */
@RestController
public class UserController {
    @Resource
    private UserService userService;

    /**
     * 获取用户列表
     * @return
     */
    @GetMapping("/getUserList")
    public List getUserList(){
        List userList = userService.getUserList();
        return userList;
    }
}

7.页面请求测试

SpringBoot系列三:整合mybatis注解_第1张图片

8.sql文本

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', '张三', 18);
INSERT INTO `user` VALUES ('2', '李四', 19);
INSERT INTO `user` VALUES ('3', '王五', 20);

补充:配置mybatis属性,让返回更简洁

@org.springframework.context.annotation.Configuration
public class MyBatisConfig {
    /**
     * 该注解使得返回值以驼峰的方式命名,就不需要使用@results 和@result对数据库字段进行重新命名匹配
     * @return
     */
        @Bean
        public ConfigurationCustomizer configurationCustomizer(){
            return new ConfigurationCustomizer(){

                @Override
                public void customize(Configuration configuration) {
                    configuration.setMapUnderscoreToCamelCase(true);
                }
            };
        }
}

之前mapper的代码就可以更改为:

 /**
     * 获取所有用户列表
     * @return
     */
   
    @Select("select * from user ")
    List getUserList ();

效果相同.

你可能感兴趣的:(springboot)