您的位置:首页 > 编程语言 > Java开发

Spring Boot中整合MyBatis,相关问题总结

2019-01-05 22:42 661 查看

Spring Boot 整合MyBatis步骤:

  • 这里用到spring-boot-starter基础和spring-boot-starter-test用来做单元测试验证数据访问
  • 引入连接mysql的必要依赖mysql-connector-java
  • 引入整合MyBatis的核心依赖mybatis-spring-boot-starter
  • 这里不引入spring-boot-starter-jdbc依赖,是由于mybatis-spring-boot-starter中已经包含了此依赖
[code]
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>1.3.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>

</dependencies>
  • 同之前介绍的使用jdbc和spring-data连接数据库一样,在application.properties中配置mysql的连接配置
[code]spring.datasource.url=jdbc:mysql://localhost:3306/testmybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

相关问题:

1、mysql 和 JDBC连接出现时区上的问题:java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or

解决方案:jdbc后面加上serverTimezone=UTC或者GMT

[code]spring.datasource.url=jdbc:mysql://localhost:3306/testmybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

//或者
spring.datasource.primary.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false

2、较新版的Spring Boot取消了@SpringApplicationConfiguration这个注解,用@SpringBootTest就可以了。

3、@Mapper ///Mapper的作用:自动生成增删改查的SQL语句 大大减化对单表的操作

4、其他相关问题参考如下代码:

[code]@Mapper   ///Mapper的作用:自动生成增删改查的SQL语句 大大减化对单表的操作
public interface UserMapper {
@Delete("DELETE FROM User") // WHERE name=#{name}
void delete();//注意返回类型

@Update("UPDATE User SET age=#{age} WHERE name=#{name}")
void update(User user);

@Select("SELECT * FROM User WHERE name = #{name}")
User findByName(@Param("name") String name);

@Insert("INSERT INTO User(name,age) VALUES(#{name}, #{age})")
int insert(@Param("name") String name,@Param("age") Integer age);

//通过Map进行插入数据记录
@Insert("INSERT INTO User(name,age) VALUES(#{name,jdbcType=VARCHAR},#{age,jdbcType=INTEGER})")
int insertByMap(Map<String,Object> map);

//通过使用普通的java对象进行插入数据记录
@Insert("INSERT INTO User(id,name,age) VALUES(#{id}, #{name}, #{age})")
int insertByUser(User user);

//对于数据库的查询操作,往往需要进行多表关联,汇总计算等操作,
// 所以往往需要返回一个与数据库实体不同的包装类,使用@Results和@Result注解进行绑定
@Results({
@Result(property = "name",column = "name"),
@Result(property = "age",column = "age")
})
@Select("SELECT name, age FROM user")
List<User> findAll();

//在上面代码中,@Result中的property属性对应User对象中的成员名,column对应SELECT出的字段名。
// 在该配置中故意没有查出id属性,只对User对应中的name和age对象做了映射配置,
// 这样可以通过下面的单元测试来验证查出的id为null,而其他属性不为null
}

针对使用

@Results
@Result
注解来进行结果绑定的测试代码如下:

[code]@Test
@Rollback
public void testUserMapper() throws Exception{
List<User> userList = userMapper.findAll();
for (User user : userList){
Assert.assertEquals(null,user.getId());
System.out.println(user.getName()+" "+user.getAge());
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: