01.springboot配置mybatis

139 阅读1分钟

两种配置方式

  • xml配置
  • 注解配置

xml配置

自查

注解配置

配置pom.xml

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.1</version>
</dependency><dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

创建application.yml文件

server:
  port: 8080
  servlet:
    context-path: /

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

测试能否链接mysql

@SpringBootApplication
@MapperScan("com.wg.demo.mapper")
public class EasyexcelApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);
        List<Map<String, Object>> result = jdbcTemplate.queryForList("SELECT * FROM member");
        System.out.println(result);
    }
​
}

测试成功后

启动类上添加@MapperScan("com.wg.demo.mapper")

@SpringBootApplication
@MapperScan("com.wg.demo.mapper")
public class EasyexcelApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

根据com.wg.demo.mapper路径,创建mapper

创建MemberMapper

若启动类上,添加了@MapperScan注解,则具体的mapper类上不用再添加@Mapper注解

@Mapper
public interface MemberMapper {
    @Select("SELECT * FROM member")
    @Results({
            @Result(property = "id", column = "id"),
            @Result(property = "username", column = "username"),
            @Result(property = "password", column = "password"),
            @Result(property = "nickname", column = "nickname"),
            @Result(property = "birthday", column = "birthday"),
            @Result(property = "phone", column = "phone"),
            @Result(property = "gender", column = "gender"),
    })
    List<Member> getMember();
    
    
    @Options(useGeneratedKeys = true, keyProperty = "po.id", keyColumn = "id")
    @Insert("insert into member (username, password, nickname, birthday, phone, gender) values (#{po.username}, #{po.password}, #{po.nickname}, #{po.birthday}, #{po.phone}, #{po.gender})")
    int save(@Param("po") MemberPo po);
​
    
    @Update("update member set `username`=#{username} where id = #{id}")
  int add(@Param("id") int id, @Param("username") String username);
    
    @Delete("delete from member where id = #{id}")
  int delete(@Param("id") int id);
    
    
}

@Insert注解用来插入

@Options注解用来指定一些配置信息,比如上面的语句中用来配置将插入的id,保存到参数MemberPo的id字段上 ​

在service类中,通过@Autowired注入来使用

@Service
public class MemberServiceImpl {
    @Autowired
    MemberMapper mapper;
​
    public List<Member> getMember(){
        return mapper.getMember();
    }
}

over

稍微复杂高级点的操作

/**
 * foreach 查询
 *
 * @param ids
 * @return
 */
@Select("<script> select * from member where id in  " +
        "<foreach collection='ids' index='index' item='id' open='(' separator=',' close=')'>" +
        "#{id}" +
        "</foreach></script>")
List<MemberPo> getByIds(@Param("ids") List<Integer> ids);
​

微信公众号:程序员WeiG