springboot 结合mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

注意:

mysql-connector-java 5.X版本与6.X包类的路径有很大区别,驱动类5.X(com.mysql.jdbc.Driver) 6.X(com.mysql.cj.jdbc.Driver),结合使用时,注意显式依赖。

springboot版本1.5.6.RELEASE是内含mysql-connector-java 5.1.34的版本

可以下载此简易封装的jar(增加些常用类型的转换,旧的时间calendar转换,统一处理枚举类型转换数值型)

源代码下载路径:https://gitee.com/zss_376987715/mybatis-dao

如何使用:

1、pom.xml导入依赖

  <dependency>
            <groupId>com.mybatis.dao</groupId>
            <artifactId>mybatis-dao</artifactId>
            <version>2.0.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version><!--$NO-MVN-MAN-VER$-->
        </dependency>

2、需要枚举转成int存储的枚举 必需实现接口implements DescriptionID

3、添加mybatisConfig配置类

@Configuration
@PropertySource(value={"classpath:/config/jdbc_mysql.properties"},encoding="UTF-8",ignoreResourceNotFound=true) //数据库相关配置信息
@MapperScan("com.song.boot.mapper")//mybatis mapper接口包路径
public class MybatisConfig {

    @Autowired
    private Environment env;
    
    @Bean
    public FactoryConfig initDBConfig(){
        FactoryConfig config = new FactoryConfig();
        config.setJdbcDriverClass(env.getProperty("jdbc.driverClass"));
        config.setJdbcUrl(env.getProperty("jdbc.url"));
        config.setJdbcUsername(env.getProperty("jdbc.username"));
        config.setJdbcPassword(env.getProperty("jdbc.password"));
        
        config.setTypeAliasPackage("com.song.boot.domain");//需要映射的实体包路径
        config.setScanEnumPackage("com.song.boot.enumerated");//需要转换的枚举包路径
        return config;
    }
    
    @Bean
    public SessionFactoryConfig initSession(){
        return new SessionFactoryConfig();
    }
    
    @Bean
    public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException{
        return initSession().createSqlSessionFactoryBean();
    }   
}

相关代码:

public interface MemberMapper {

    @Select("select * from sale_member where account = #{account}")
    public Member queryMemberByAccount(String account);
    
    @Insert("insert into member(account,sex,lastLoginTime,birthday) "
            + " values(#{account},#{sex},#{lastLoginTime},#{birthday})")
    public int add(Member member);
}

@RestController
@RequestMapping("member")
public class MemberController {   
    @Autowired
    private MemberMapper memberMapper;

}

public class Member {
    private long id;
    private String account;
    private Sex sex;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastLoginTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthday ;
}

原文地址:https://www.cnblogs.com/song27/p/7591004.html