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

springboot整合Mybatis(一)——入门

2018-02-12 11:27 555 查看

一、概述

  1.先导

    mybatis入门随笔:http://www.cnblogs.com/jiangbei/p/6884641.html

  2.引入依赖

       <dependency>
   <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>


    //其他必须的依赖还包括mysql连接,web依赖(web项目),此处贴出完整依赖(有部分依赖例如jpa此处可不选)

package com.example.demo.service;

import com.example.demo.dao.GirlRepository;
import com.example.demo.bean.Girl;
import com.example.demo.enums.ResultEnum;
import com.example.demo.exception.MyException;
import com.example.demo.mapper.GirlMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
* service
*
* @author zcc ON 2018/2/9
**/
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlMapper girlMapper;
@Transactional
public void insertTwo() {
Girl girl1 = new Girl("Nana", 18);
Girl girl2 = new Girl("Lala", 19);
girlRepository.save(girl1);
girlRepository.save(girl2);
}

public void getAge(Integer id) {
Integer age = girlRepository.findOne(id).getAge();
if (age < 12) {
// 小学生
throw new MyException(ResultEnum.PRIMARY);
} else {
// 上初中了
throw new MyException(ResultEnum.MIDDLE);
}
}

/**
* 通过id查询
* @param id 实体类id
* @return
*/
public Girl findOne(Integer id) {
return girlRepository.findOne(id);
}
public List<Girl> findByNameStartingWithAndIdLessThan(String name, Integer id) {
return girlRepository.findByNameStartingWithAndIdLessThan(name, id);
}

public Girl findGirlById(Integer id) {
return girlMapper.findGirlById(id);
}

public int updateGirl(Integer id, Girl girl) {
return girlMapper.updateGirl(id, girl);
}
}


service
   注入mapper报错的处理(不影响实际使用,强迫症可选)



  实际测试可以使用经典的postman,也推荐IDEA自带的tool——REST Client

三、经典注解版

  基本代码类似,只是少数代码更改

  项目结构:

    


  yml配置mybatis:

mybatis:
type-aliases-package: com.example.demo.bean
mapper-locations: classpath:mybatis/mapper/*.xml
config-location: classpath:mybatis/mybatis-config.xml


  // 别名也可以在mybatis-config.xml中进行配置!,默认别名参考文档:点击查看

  mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
</typeAliases>
</configuration>


  mapper:

package com.example.demo.mapper;

import com.example.demo.bean.Girl;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* GirlMapper
*
* @author zcc
**/
// 这里不在这里加@Repository注解,统一在启动类通过MapperScan扫描
public interface GirlMapper {

Girl findGirlById(Integer id);

List<Girl> findAll();

int addGirl(Girl girl);

int updateGirl(@Param("id") Integer id, @Param("girl") Girl girl);

int deleteGirl(Integer id);
}


  mapper.xml:

<?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接口代理实现编写规则:
1.映射文件中namespace要等于接口的全路径
2.映射文件中sql语句的id要等于接口的方法名
3.映射文件中传入参数类型要等于接口方法的入参
4.映射文件返回值类型要等于接方法的返回值类型
-->
<mapper namespace="com.example.demo.mapper.GirlMapper">
<resultMap id="BaseResultMap" type="girl">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="age" property="age" jdbcType="INTEGER"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
</resultMap>

<sql id="Base_Column_List">
id,age,name
</sql>

<select id="findGirlById" parameterType="integer" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM girl
WHERE id = #{id}
</select>

<select id="findAll" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM girl
</select>

<select id="addGirl" parameterType="girl">
INSERT INTO
girl(age,name)
VALUES(#{age},#{name})
</select>

<update id="updateGirl" parameterType="girl">
UPDATE
girl
SET
age = #{age},name = #{name}
WHERE
id = #{id}
</update>

<delete id="deleteGirl" parameterType="integer">
DELETE
FROM
girl
WHERE
id = #{id}
</delete>
</mapper>


  mapper中的各种警告处理(不影响使用,强迫症可以进行设置):

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