美文网首页
无废话mybatis三(select的用法)

无废话mybatis三(select的用法)

作者: 毛仑上保罗先生 | 来源:发表于2018-10-29 09:19 被阅读0次

    UserMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="tk.mybatis.simple.mapper.UserMapper">
        <resultMap id="userMap" type="SysUser">
            <id property="id" column="id"/>
            <result property="userName" column="user_Name"/>
            <result property="userPassword" column="userPassword"/>
            <result property="userEmail" column="userEmail"/>
            <result property="userInfo" column="userInfo"/>
            <result property="headImg" column="headImg" jdbcType="BLOB"/>
            <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
        </resultMap>
    
        <select id="selectByid" resultMap="userMap">
            select * from sys_user where id =#{id}
        </select>
    
        <select id="selectAll" resultType="tk.mybatis.simple.model.SysUser">
            select * from sys_user
        </select>
    </mapper>
    
    

    mapper节点中需要指定namespace="tk.mybatis.simple.mapper.UserMapper"

    resultMap:用于设置返回值的类型和映射关系
    <select> : 映射查询语句使用的标签。
    id :命名空间中的唯 标识符,可用来代表这条语句。
    '# {id} :MyBatis SQL 中使用预编译参数的一种方式,大括号中的 id 是传入的参数名

    image.png
    image.png

    如果传入的是实体类那必须和实体类中字段一致才行,否则报错


    image.png

    result: 列结果

    resultMap节点中的result标签 property表示java属性, column表示数据库字段, jdbcType表示列对应的数据库类型。在下面两个select标签, 一个是根据用户id查询用户,其返回值就是resultMap映射

    <select id="selectByid" resultMap="userMap">
            select * from sys_user where id =#{id}
    </select>
    

    下面一个是根据设置mybatis的自动映射字段成

    
    <select id="selectAll" resultType="SysUser">
            select * from sys_user
    </select>
    
    

    BaseMapperTest.java

    package simple;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.BeforeClass;
    
    import java.io.IOException;
    import java.io.Reader;
    
    public class BaseMapperTest {
        private static SqlSessionFactory sqlSessionFactory;
    
        @BeforeClass
        public static void init() {
            try {
                Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
                reader.close();
            } catch (IOException ignore) {
                ignore.printStackTrace();
            }
        }
    
        public SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
        }
    }
    
    
    @Test
        public void testUserSelectById() {
            SqlSession sqlSession = getSqlSession();
            try {
                SysUser sysUser = sqlSession.selectOne("tk.mybatis.simple.mapper.UserMapper.selectByid", 1);
                System.out.println(sysUser.getUserName());
            } finally {
                sqlSession.close();
            }
        }
    
    image.png

    在调用的时候是直接指定名称, 当然还有一种不需要指定名称的方式, 那就是getMapper的方式

    @Test
        public void testUserSelectById2() {
            SqlSession sqlSession = getSqlSession();
            try {
                UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
                SysUser sysUser = userMapper.selectByid(Long.valueOf(1));
                System.out.println(sysUser.getUserName());
            } finally {
                sqlSession.close();
            }
        }
    
        @Test
        public void testUserSelectAll2() {
            SqlSession sqlSession = getSqlSession();
            try {
                UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
                List<SysUser> sysUsers = userMapper.selectAll();
                if (sysUsers != null) {
                    for (SysUser user : sysUsers) {
                        System.out.println(user.getUserName());
                    }
                }
            } finally {
                sqlSession.close();
            }
        }
    
    

    相关文章

      网友评论

          本文标题:无废话mybatis三(select的用法)

          本文链接:https://www.haomeiwen.com/subject/cledtqtx.html