这节将实现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.页面请求测试
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 ();
效果相同.