Mybatis笔记(一)

  1. zaiMybatis中Sql执行都是通过MappedStatement来进行
    通过Dao层方法调用,是通过拦截方法并拼接Dao层ClassName和方法名作为StatementId查找对应的MappedStatement;
    通过SqlSession可以直接通过StatementId获取对应的MappedStatement并执行;
@SpringBootTest
public class UserTest {

    private final static Logger log = LoggerFactory.getLogger(UserTest.class);

    @Resource
    private UserBaseMapper userBaseMapper;

    @Resource
    private SqlSession sqlSession;

    @Test
    public void testMapper(){
        log.info("query by mapper {}",userBaseMapper.selectByPrimaryKey(1l));
    }


    @Test
    public void testSqlSession(){
        log.info("query by sqlSession {}",(UserBase)sqlSession.selectOne("xxx.xxx.xxx.mapper.UserBaseMapper.selectByPrimaryKey",1l));
    }
}

在这里插入图片描述
在这里插入图片描述

  1. MappedStatement中包含SqlSource为执行的对应Sql语句;
 sqlSession.getConfiguration()
           .getMappedStatement("xxx.xxx.xxx.mapper.UserBaseMapper.selectByPrimaryKey")
           .getSqlSource()

在这里插入图片描述

<sql id="Base_Column_List">
        id,phone,idcard,
        name
</sql>

<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from user_base
    where  id = #{id,jdbcType=INTEGER} 
</select>
  1. ResultMap为结果映射与Mapper.xml中一一对应
@Test
    public void testGetResultMap(){
        log.info("resultMaps {}", JSONUtil.toJsonStr(sqlSession.getConfiguration().getMappedStatement("xxx.xxx.xxx.mapper.UserBaseMapper.selectByPrimaryKey").getResultMaps()));
    }
[
    {
        "id": "xxx.xxx.xxx.mapper.UserBaseMapper.BaseResultMap",
        "type": "class xxx.xxx.xxx.entity.UserBase",
        "resultMappings": [
            {
                "property": "id",
                "column": "id",
                "javaType": "class java.lang.Integer",
                "jdbcType": "INTEGER",
                "typeHandler": {
                    "rawType": "class java.lang.Integer"
                },
                "notNullColumns": [],
                "flags": [
                    "ID"
                ],
                "composites": [],
                "lazy": false
            },
            {
                "property": "phone",
                "column": "phone",
                "javaType": "class java.lang.String",
                "jdbcType": "VARCHAR",
                "typeHandler": {
                    "rawType": "class java.lang.String"
                },
                "notNullColumns": [],
                "flags": [],
                "composites": [],
                "lazy": false
            },
            {
                "property": "idcard",
                "column": "idcard",
                "javaType": "class java.lang.String",
                "jdbcType": "VARCHAR",
                "typeHandler": {
                    "rawType": "class java.lang.String"
                },
                "notNullColumns": [],
                "flags": [],
                "composites": [],
                "lazy": false
            },
            {
                "property": "name",
                "column": "name",
                "javaType": "class java.lang.String",
                "jdbcType": "VARCHAR",
                "typeHandler": {
                    "rawType": "class java.lang.String"
                },
                "notNullColumns": [],
                "flags": [],
                "composites": [],
                "lazy": false
            }
        ],
        "idResultMappings": [
            {
                "property": "id",
                "column": "id",
                "javaType": "class java.lang.Integer",
                "jdbcType": "INTEGER",
                "typeHandler": {
                    "rawType": "class java.lang.Integer"
                },
                "notNullColumns": [],
                "flags": [
                    "ID"
                ],
                "composites": [],
                "lazy": false
            }
        ],
        "constructorResultMappings": [],
        "propertyResultMappings": [
            {
                "property": "id",
                "column": "id",
                "javaType": "class java.lang.Integer",
                "jdbcType": "INTEGER",
                "typeHandler": {
                    "rawType": "class java.lang.Integer"
                },
                "notNullColumns": [],
                "flags": [
                    "ID"
                ],
                "composites": [],
                "lazy": false
            },
            {
                "property": "phone",
                "column": "phone",
                "javaType": "class java.lang.String",
                "jdbcType": "VARCHAR",
                "typeHandler": {
                    "rawType": "class java.lang.String"
                },
                "notNullColumns": [],
                "flags": [],
                "composites": [],
                "lazy": false
            },
            {
                "property": "idcard",
                "column": "idcard",
                "javaType": "class java.lang.String",
                "jdbcType": "VARCHAR",
                "typeHandler": {
                    "rawType": "class java.lang.String"
                },
                "notNullColumns": [],
                "flags": [],
                "composites": [],
                "lazy": false
            },
            {
                "property": "name",
                "column": "name",
                "javaType": "class java.lang.String",
                "jdbcType": "VARCHAR",
                "typeHandler": {
                    "rawType": "class java.lang.String"
                },
                "notNullColumns": [],
                "flags": [],
                "composites": [],
                "lazy": false
            }
        ],
        "mappedColumns": [
            "IDCARD",
            "PHONE",
            "ID",
            "NAME"
        ],
        "mappedProperties": [
            "phone",
            "idcard",
            "name",
            "id"
        ]
    }
]
  <resultMap id="BaseResultMap" type="xxx.xxx.xxx.entity.UserBase">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="phone" column="phone" jdbcType="VARCHAR"/>
            <result property="idcard" column="idcard" jdbcType="VARCHAR"/>
            <result property="name" column="name" jdbcType="VARCHAR"/>
    </resultMap>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值