资讯专栏INFORMATION COLUMN

mybatis注解和xml常用语句

zqhxuyuan / 2604人阅读

摘要:用这种方式接受用户的输入,并将其用于语句中的参数是不安全的,会导致潜在的注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。如何使用连接池。连接池配置方式详见官网首先实行方法,然后返回设置数据源方法。

mybatis注解使用

1.简单crud

public interface UserMapper {
  //查询
  @Select("select * from user where id=#{id}")
  User selectUser(int id);
  //查询全部
  @Select("select * from user")
  List selectUserList();
 //增加数据
 @Insert("insert into user (name) values(#{name})")
 boolean insertUser(String name);
     //修改用户
 @Update("update user set name=#{name} where id=#{id}")
 boolean updateUser(@Param("name") String name,@Param("id") int id);
 //删除用户
 @Delete("delete from user where id=#{id}")
 boolean deleteUser(int id);
}

2.一对一注解

@Select("select * from user")
@Results({
        @Result(id = true,property = "id",column = "id"),//id=true 对应于主键
        @Result(property = "uid",column = "uid"),
        @Result(property = "user",column = "uid",javaType = User.class,
        one = @One(select = "com.example.dao.UserDao.findUserByid",fetchType = FetchType.DEFAULT))
        //user 对应实体类中一对一的实体类名字,uid表示通过uid外键查询User,JavaType表示查询结果
        //映射成User类型对象,one=表示一对xx fetchType.default默认是立即加载全部查询,使用lazy懒加载需要才查询
})
List selectUserList();

3,一对多注解

@Select("select * from user")
@Results({
        @Result(id = true,property = "id",column = "id"),//id=true 对应于主键
        @Result(property = "uid",column = "uid"),
        @Result(property = "user",column = "uid",javaType = User.class,
        many = @Many(select = "com.example.dao.UserDao.findUserByid",fetchType = FetchType.DEFAULT))
        //user 对应实体类中一对一的实体类名字,uid表示通过uid外键查询User,JavaType表示查询结果
        //映射成User类型对象,one=表示一对xx fetchType.default默认是立即加载全部查询,使用lazy懒加载需要才查询
})
List selectUserList();

mybatis的xml配置

1.配置resultMap

    
    
    
    
    

2.通用sql短语

  
    aa, bb
  

 
    
        
            AND t.ID = #{id}
        
        
            AND t.CONTENT LIKE concat("%", #{content},"%")
        
        AND t.APP_CODE IN
        
            #{item}
        
        and t.USER_ID=u.id and t.REMOVED=0
    

3.需要验证的插入

 
    insert into xxx (
    
        
            TITLE ,
        
    
    ) VALUES (
    
        
            #{title} ,
        
    
    )

4.需要验证的更新


    UPDATE xxx
    
        
            TITLE = #{title} ,
        
    
    WHERE
    ID = #{id}

5.


    update xxx
    
        
            
                
                    when ID=#{item.id} then #{item.aa}
                
            
        
        
            
                
                    when ID=#{item.id} then #{item.bb}
                
            
        
    
    where ID in
    
        #{item.id,jdbcType=BIGINT}
    

使case when求和算数sql

SELECT
    sum(
        CASE
        WHEN `REMOVED` = 0 THEN
            1
        ELSE
            0
        END
    )
FROM
    xxx;


mybatis可以使用string给数据库int类型赋值
springboot中开启日志

#mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

1.ORDER BY ${columnName}

这里 MyBatis 不会修改或转义字符串。NOTE 用这种方式接受用户的输入,并将其用于语句中的参数是不安全的,会导致潜在的 SQL 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。

2.如何使用连接池。

首先实例化连接池数据源对象,让他实现DataSourceFactory这个接口。然后实现方法。在mybatis。conf文件中设置数据连接池这个类,将数据库连接信息放在config.properties文件中。

3.mybatis.config文件中setting和数据源的设置参数区别

会被覆盖。

4.连接参数查询顺序

首先查询properties文件,然后查询resource文件,最后查询方法参数。重复的话会被覆盖。

5.druid连接池配置方式:

详见官网
DruidDataSourceFactory首先实行setproperties方法,然后返回设置数据源方法。drui数据源也需要在DataSource中设置properties文件

8.实体类的方法不定义也可以进行映射

9.mybatis默认是事务不提交

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77074.html

相关文章

  • 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis

    摘要:基于最新的,是你学习的最佳指南。驱动程序通过自动注册,手动加载类通常是不必要。由于加上了注解,如果转账中途出了意外和的钱都不会改变。三的方式项目结构相比于注解的方式主要有以下几点改变,非常容易实现。公众号多篇文章被各大技术社区转载。 Github 地址:https://github.com/Snailclimb/springboot-integration-examples(Sprin...

    gghyoo 评论0 收藏0
  • Spring Boot [集成-MyBatis]

    摘要:通过配置文件通过配置导入指定的使用的方式属性的同学也可以通过配置通过配置先配置文件使用的方式再配置注意中对象需要添加托管给方能正常使用。建议与任选其一,建议使用通过注解的方式使用,当然如果习惯配置的方式也可以使用。 导读: 在上篇文章中我们介绍了spring-data-jpa的一些常用方法,在这篇文章中我们在介绍关于mybatis与Spring Boot 的集成,及一些常用方法 集成:...

    XBaron 评论0 收藏0
  • 面试官都会问的Mybatis面试题,你会这样回答吗?

    摘要:最终能和面试官聊的开心愉快投缘的叫面霸。能够与很好的集成提供映射标签,支持对象与数据库的字段关系映射提供对象关系映射标签,支持对象关系组件维护。使用可以有效的防止注入,提高系统安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。...

    seanHai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<