文章目录


现在Mybatis用的是最多的了 当然后面还有Mybatis-plus Fluent Mybatis 之后会讲到

1. 引入依赖

<!--web模块必要依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--注解方式书写set/get 构造函数 非常好用-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>

注意版本的选择

3. SpringBoot 整合 Mybatis+mysql_xml

2. 配置文件设置

#设置请求的端口号
server.port=9999

#数据库配置
spring.datasource.username=bb
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#修改成自己的ip和库名
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai

#mybaits相关配置

#设置xml的映射文件路径 必须!!!
mybatis.mapper-locations=classpath:mapper/*.xml
#设置基础pojo的包名 可以在xml中省略包名前缀
mybatis.type-aliases-package=cn.bb.springbootstart.pojo
#会在控制台打印出对应的sql语句
logging.level.cn.bb=debug

3.创建数据库表

3. SpringBoot 整合 Mybatis+mysql_ide_02

新建一个 test 数据库 创建user表

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`desc` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
)

4. 实体类 mapper 生成

这里我使用的是idea 的插件 mybatis code helper 直接一键生成 非常好用


如图所示 3. SpringBoot 整合 Mybatis+mysql_xml_03

4.1 User类

如果在数据表字段里写了注释 也会自动生成的

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private Integer id;

private String name;

private Integer age;

private String desc;

private static final long serialVersionUID = 1L;
}

4.2 UserMapper 类

注意这上面的​​@Mapper​​注解 可以在每个Mapper类上加

或者在入口类统一加上扫描注解 ​​@MapperScan("mappe类所在的包名")​

如我这里的包名为 cn.bb.springbootstart.mapper

@Mapper
public interface UserMapper {
int deleteByPrimaryKey(Integer id);

int insert(User record);

int insertSelective(User record);

User selectByPrimaryKey(Integer id);

int updateByPrimaryKeySelective(User record);

int updateByPrimaryKey(User record);
}

4.3 UserMapper.xml

注意对应的​​namespace​​​和​​type​​要改成自己的包名 不要一味的复制

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--改成自己的包名-->
<mapper namespace="cn.bb.springbootstart.mapper.UserMapper">
<!--改成自己的类名-->
<resultMap id="BaseResultMap" type="cn.bb.springbootstart.pojo.User">
<!--@mbg.generated-->
<!--@Table `user`-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="age" jdbcType="INTEGER" property="age" />
<result column="desc" jdbcType="VARCHAR" property="desc" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, `name`, age, `desc`
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--@mbg.generated-->
select
<include refid="Base_Column_List" />
from `user`
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<!--@mbg.generated-->
delete from `user`
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="cn.bb.springbootstart.pojo.User" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into `user` (`name`, age, `desc`
)
values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{desc,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="cn.bb.springbootstart.pojo.User" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into `user`
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="name != null">
`name`,
</if>
<if test="age != null">
age,
</if>
<if test="desc != null">
`desc`,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="age != null">
#{age,jdbcType=INTEGER},
</if>
<if test="desc != null">
#{desc,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="cn.bb.springbootstart.pojo.User">
<!--@mbg.generated-->
update `user`
<set>
<if test="name != null">
`name` = #{name,jdbcType=VARCHAR},
</if>
<if test="age != null">
age = #{age,jdbcType=INTEGER},
</if>
<if test="desc != null">
`desc` = #{desc,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="cn.bb.springbootstart.pojo.User">
<!--@mbg.generated-->
update `user`
set `name` = #{name,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
`desc` = #{desc,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>

其他service controller就省略的 反正调用的还是这个mapper类

5. 测试增删改查

我们直接在测试文件夹里直接测试了 效果图就不上了 很简单的东西

@SpringBootTest
class SpringbootstartApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void insert() {
User user = new User();
User user2 = new User();
user.setName("bb");
user2.setName("didi");
userMapper.insertSelective(user);
userMapper.insertSelective(user2);
}
@Test
void delete() {
userMapper.deleteByPrimaryKey(1);
}
@Test
void update() {
User user = new User();
user.setId(2);
user.setDesc("打水");
userMapper.updateByPrimaryKey(user);
}

@Test
void select() {
System.out.println(userMapper.selectByPrimaryKey(2));
}

}

想拓展的话就在xml文件中新增即可


你的笑容怡人如晚霞般,在川流不息的时光中,神采飞扬。 -「 时光」