最近开始学后端,然后直接上手了springboot+mybatis。然后就实现了一个小例子,花了我整整一天时间。在这做个小记录,也给在用最新版的同学一个参考。springboot整合mybatis时,我用的是mybatis3.x最新版的注解方式配置的,这样实现的接口看起来更简单点(确实简单点)。建项目啥的我在这就不说了,直接上主要配置吧。
applicaltion.properties的配置:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# 注意注意
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.xiangzhang.entity (表的实体类所在的包)
# 驼峰命名规范 如:数据库字段是 order_id 那么 实体字段就要写成 orderId
mybatis.configuration.map-underscore-to-camel-case=true
pom.xml的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MYSQL包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!-- 引入第三方数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<!-- 默认就内嵌了Tomcat 容器,如需要更换容器也极其简单-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 测试包,当我们使用 mvn package 的时候该包并不会被打入,因为它的生命周期只在 test 之内-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
实体类User
package com.xiangzhang.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class User implements Serializable {
private static final long serialVersionUID = 8655851615465363473L;
private int id;
private String name;
private float hp;
private float damage;
}
在这里用了Lombok的**@Data**注解功能,可以省去getter和setter的代码,可以减少不少的代码量,加快开发速度。lombok需要另外引入依赖。还要加载对应的lombok plugin插件。不然没法使用哦。
UserMapper:通过注解方式实现的接口
package com.xiangzhang.mapper;
import com.xiangzhang.entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
/**
* 通过注解方式完成接口的实现
*/
@Mapper
public interface UserMapper {
/**根据英雄id查询英雄属性
* @param 传入的id
* @return 查询的结果集
*/
@Select("select * from hero where id = #{id}")
List<User> returnById(@Param("id") int id);
/**
* 返回hero表中的所有数据
* @return 所有结果集
*/
@Select("select * from hero")
List<User> returnResult();
/**
* 实现数据插入功能
* @param name 英雄名
* @param hp 英雄血量值
* @param damage 英雄伤害值
* @return 插入是否成功
*/
@Insert("insert into hero(name, hp, damage) VALUES(#{name}, #{hp}, #{damage})")
int insert(@Param("name") String name,@Param("hp") float hp,@Param("damage") float damage);
/**
*根据英雄id更新英雄名
* @param name 英雄名
* @param id 英雄id
* @return 更新是否成功
*/
@Update("update hero set name = #{name} where id = #{id}")
int update(@Param("name") String name,@Param("id") int id);
/**
* 根据英雄id删除该英雄
* @param id 英雄id
* @return 删除是否成功
*/
@Delete("delete from hero where id = #{id}")
int delete(@Param("id") int id);
}
最后再来个测试类代码,结果用log方式输出,在控制台可以观察:
package com.xiangzhang;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.xiangzhang.entity.User;
import com.xiangzhang.mapper.UserMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
private static final Logger log = LoggerFactory.getLogger(DemoApplicationTests.class);
@Autowired
private UserMapper userMapper;
@Test
public void test_curd() throws Exception{
final int row1 = userMapper.insert("露娜",2500,4500);
if(row1 == 1){
log.info("[添加第一个结果] - [{}]","成功");
}
final int row2 = userMapper.insert("貂蝉",1200,5600);
if(row2 == 1){
log.info("[添加第二个结果] - [{}]","成功");
}
final List<User> user = userMapper.returnById(2);
log.info("根据用户id查询 - [{}]",user);
final int row3 = userMapper.update("狄仁杰",1);
if(row3 == 1){
log.info("[更新英雄名] - [{}]","成功");
}
final int row4 = userMapper.delete(11);
if(row4 == 1){
log.info("[删除英雄] - [{}]","成功");
}
final List<User> users = userMapper.returnResult();
log.info("查询hero表的所有数据 - [{}]",users);
}
}
如果对你有所帮助,记得点个赞哦。