介绍下springboot集成mybatis的使用:
Spring Boot 集成MyBatis有两种方式:
第一种方式就是使用MyBatis官方提供的:
mybatis-spring-boot-starter
采用这种方式的话直接引入此依赖即可
第二种方式就是仍然用类似mybatis-spring的配置方式,
这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置;
注:本例采用的是第一种方式;简单方便;
主要步骤为:
(1)在pom.xml添加mybatis等相关依赖;
<!--spring boot整合mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!--mysql数据库的依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.5</version> </dependency> <!--thymeleaf模板引擎 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>(2)在application.properties文件中配置mysql连接配置文件
spring.datasource.url = jdbc:mysql://localhost:3306/spring?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true spring.datasource.username = root spring.datasource.password = root spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver spring.datasource.testOnBorrow = true spring.datasource.validationQuery = SELECT 1
(3)创建实体类
@Component public class User { private Integer id; private String name; private String gender; private Integer age;
getset方法省略;
注意实体类和数据库user表的字段要保持一致;
(4):创建mapper接口
@Mapper public interface UserMapper { @Insert("INSERT INTO user(NAME,gender,age) VALUES (#{name},#{gender},#{age})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int addUser(User user); @Delete("DELETE FROM user WHERE id = #{id}") int deleteuser(Integer id); @Update("UPDATE user SET NAME = #{name},gender=#{gender},age=#{age} WHERE id = #{id}") int updateUser(User user); @Select("SELECT * FROM user WHERE id = #{id}") User findUserById(Integer id); @Select("SELECT * FROM user") List<User> findAll(); }
注:上面的定义的mapper直接写上了sql语句,简单方便,没有在xml中定义,我们也可以在xml中定义sql语句,
@Mapper指定这是一个mybatis的mapper接口;
@Insert 代表添加的SQL语句;
@Delete 代表添加的SQL语句;
@Update 代表添加的SQL语句;
@Select 代表添加的SQL语句;
@Options 能够设置缓存时间,能够为对象生成自增的key,通常用户查询和添加当中
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")user表有一个id自增长主键,如何在插入用户数据后自动获取到该主键值呢?可以使用@Options注解:
设置@Options属性userGeneratedKeys的值为true,并指定实例对象中主键的属性名keyProperty为id,这样在user插入数据后,id属性会被自动赋值。
(5)):创建service类
@Service public class UserService { @Autowired private UserMapper userMapper; /** * 列出所有用户列表信息; * @return */ public List<User> listUser(){ List<User> userList = userMapper.findAll(); return userList; }注 service类要注入mapper;添加@service注解;
(6))创建controller
@Controller @RequestMapping("/web/user") public class UserController { @Autowired private UserService userService; //列出所有用户信息; @RequestMapping("/list") public String listUser (ModelMap map){ List<User> userList = userService.listUser(); map.addAttribute("users", userList); return "user/list"; }注: 控制层controller要注入service;
@RequestMapping指定请求的路径;
ModelMap map用户传递响应的数据到客户端游览器展示给用户;,业执行之后的数据需要他传到页面解析;
public String listUser ()此方法返回必须是String.返回的信息正好对应我们的html文件名;
(7) 编写html文件
省略
本例GitHub地址: https://github.com/gumeimen/springbootmybatisa