温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mybatis实战总结

发布时间:2020-06-23 21:14:57 来源:网络 阅读:340 作者:栖木之地 栏目:编程语言

项目实战使用的技术是spring boot ,mybatis,druid

mybatis采用注解的方式,没有采用xml的方式,省去配置的内容。

项目使用maven管理依赖包,数据库使用mysql5.7

  1. 引入依赖:

    <!--mybatis的包-->
            <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.1</version>
    </dependency>
            <!--druid数据库连接池的包-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
            <!--mysql数据库驱动的包-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
    </dependency>
  2. 项目配置文件
    #DB数据源配置
    spring.datasource.druid.initial-size=1
    spring.datasource.druid.min-idle=3
    spring.datasource.druid.max-active=20
    #配置获取连接等待超时的时间
    spring.datasource.druid.max-wait=60000
    #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    spring.datasource.druid.time-between-eviction-runs-millis=60000
    #配置一个连接在池中最小生存的时间,单位是毫秒
    spring.datasource.druid.min-evictable-idle-time-millis=300000
    spring.datasource.druid.stat-view-servlet.login-username=admin
    spring.datasource.druid.stat-view-servlet.login-password=admin
    spring.datasource.druid.one.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.druid.one.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.druid.one.url=jdbc:mysql://mysql:3306/seasfood?characterEncoding=utf8&useSSL=true&serverTimezone=PRC&nullNamePatternMatchesAll=true
    spring.datasource.druid.one.username=root
    spring.datasource.druid.one.password=123456
    需要配置数据库的地址和密码,这个例子仅对druid做了简单的配置,更多优化配置到druid官网查看

  3. 项目数据源配置,这里没有读写分离的数据源配置,编写一个spring配置类:

      @Configuration("DaoConfiguration")
        @EnableTransactionManagement
        public class DaoConfiguration {
            @Primary
            @Bean
            @ConfigurationProperties("spring.datasource.druid.one")
            public DataSource dataSourceOne() {
                    return DruidDataSourceBuilder.create().build();
            }
            @Bean
            public DataSourceTransactionManager dataSourceTransactionManager() {
                    return new DataSourceTransactionManager(dataSourceOne());
            }
    }
  4. 编写一个mapper接口,必须在spring能够扫描到的包下

    @Mapper
    public interface GoodsMapper {
            @Select("SELECT * FROM goods")
            List<GoodsEntity> selectGoods(@Param("now") Date date);
    }
  5. 在service组件中注入mapper接口即可使用

    @Autowired
    private GoodsMapper mapper;
    mapper.selectGoods();
  6. mybatis的高级用法:
    1: 动态sql语句,通过增加<script></script>来让sql语句可以根据条件增加WHERE,AND,OR,IN等内容
    2:结果集缓存:一般不用,都是在service层做cache处理
    3:类型处理器TypeHandler:用于把一些特殊的列的值转换成特殊的字段,例如把逗号或者其他分隔符分隔的值转换成List
    4:拦截器:用来做一些特殊的处理,例如分页

删除记录:
@Delete("DELETE FROM mytable WHERE id=#{}")
更新记录:
@Update("UPDATE mytable SET myname=#{myname}")
插入记录:
@Insert("INSERT INTO mytable (myfield1,myfield2) VALUES (#{var1},#{var2})

-

使用@SelectKey获取自增主键的值:
@SelectKey(statement = "select max(addr_id)+1 as id from user_address", before = true, keyColumn = "id", resultType = String.class, keyProperty = "addr_id")

使用注解时,Mapper中的queryId:
使用注解的方法名作为queryId,如果方法名相同的,其中一个会以方法名作为queryId,而其他的则会以类全名加方法名作为queryId

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI