MyBatis相关配置优化

一.驼峰匹配

数据库的字段的驼峰写法与java变量的驼峰写法不一样,导致数据不能匹配。java命名规则:驼峰书写, 大小写区分两个单词的界限。
例: userName;
数据库经典命名规则:两个单词之间,使用下划线分割。
举例:user_name
开启驼峰匹配:相当于去掉数据库名字中的下划线,然后在与java中的属性名进行对应。
数据库中的user_name 和java属性中的 userName 是一样的

1. 配置mybatis-config.xml

 <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

2. 使用ResultMap结果集替换resulttype

 <!--查询所有映射-->
    <!--
        id:resultMap的标识
        type:映射的类型
        autoMapping:true(默认) 支持 属性名与字段名自动映射  false:只针对resultMap定义的属性映射
    -->
    <resultMap id="userResultMap" type="User" autoMapping="true">
        
        <!--id一般作为主键,它有自己的标签,实现属性名与字段名一一映射-->
        <id column="id" property="id"/>
        
        <!--除了id以外的字段,用result标签实现属性名与字段名一一映射-->
        <result column="user_name" property="userName"/>
        
        <!--如果,属性名与字段一致,可以省略不写-->
        <result column="sex" property="sex"/>

    </resultMap>
    <!--查询所有-->
    <select id="queryAllUser" resultMap="userResultMap">
        select * from tb_user
    </select>

二.resultType优化

mybatis-config.xml

  <!--类别名-->
    <typeAliases>
        <!--方式一:指定具体的实体类-->
        <typeAlias type="cn.yanqi.pojo.User" alias="User"/>
        <!--方式二:扫描pojo包下所有实体类,类别名不区别大小写。建议大家直接写类名即可-->
        <package name="cn.kxx.pojo"/>
    </typeAliases>

mapper xml sql 文件就可以直接使用类名或者别名了

    <!--resultType 返回的类型,可以直接使用类别名-->
    <select id="queryAllUser" resultType="User">
        select * from tb_user
    </select>

三.environments环境

其实我们后开发中,不止一个环境,例如:开发环境,测试环境,发布环境等可以在项目中设置多环境

mybatis-config.xml

 <!--连接数据库-->
    <environments default="development">

        <!--默认环境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>

        <!--指定环境-->
        <environment id="dev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

java代码使用时连接数据库选择环境

@Before
    public void setUp() throws Exception {
        //指定核心配置文件的位置
        String resource = "mybatis-config.xml";
        //加载核心配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //构建sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"dev");//使用指定环境
        //获取SqlSession对象,SqlSession可以操作crud
        sqlSession = sqlSessionFactory.openSession();

        //SqlSession进行数据库操作
        // userDao = new UserDaoImpl(sqlSession);

        userDao = sqlSession.getMapper(UserDao.class);

    }

四.mapper映射器

<!--加载mapper映射文件-->
    <mappers>
        <!--方式一-->
        <!--<mapper resource="UserMapper.xml"/>-->

        <!--方式二
                要求:1、接口名要与mapper的名一致
                      2、接口类要与mapper.xml文件放在同一目录中
        -->
        <mapper class="cn.yanqi.mapper.UserMapper"/>

        <!--方式三
               要求:1、接口名要与mapper的名一致
                     2、接口类要与mapper.xml文件放在同一目录中
                缺点:
                1、如果包的路径有很多?2、mapper.xml和mapper.java没有分离。
                3、在spring整合的时候可以解决这个问题
         -->
        <package name="cn.yanqi.mapper"/>
    </mappers>

运行时会报错
原因: 使用IDEA加载src下的xml文件会被忽略xml问题

解决方案就是让IDEA不要忽略src目录下的xml文件,在pom.xml文件中添加代码

<build>
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>
  </resources>
</build>```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值