Mybatis 的部分优化及注意事项

一、加载数据库时可以编写外部文件通过导入的方式获取

(1)外部资源

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUncode=true&characterEncoding=UTF-8
username=root
password=123456
//读取外部资源
<properties resource="db.properties"/>

<dataSource type="POOLED">
                <property name="driver" value= "${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
</dataSource>

二、可以准备多套环境,使用那套时仅需将默认环境环境设置对应环境的ID即可

 三、设置类的别名

(1)方法一(修改类名):

<typeAliases>
        <typeAlias type="com.lisi.pojo.User" alias="User"></typeAlias>
</typeAliases>

(2)方法二(指定包名):

        1、Mybatis会在对应的包名下搜索需要的JavaBean,例如扫描实体类的包,它的默认名就为该类名的首字母缩写。

<typeAliases>
        <package name="com.lisi.pojo"/>
</typeAliases>

         2、(加注解):

        在想修改的类里加注解引号中的就为该类的别名

@Alias("hello")

两种方法的对比:

(1)在实体类比较少的时候使用方法一,反之使用第二种。

(2)对一种的别名可以随意设置,第二种不可以,如果非要该则需要在对应类里面加注解

四、Mapper文件的注册绑定

方法一:

<mapper resource="com/lisi/dao/UserMapper.xml"></mapper>

方法二:

<mapper class="com.lisi.dao.UserMapper">

方法三:

 <package name="com.lisi.dao"/>

方法二和方法三的注意事项:

(1)接口和Mapper配置文件必须同名

(2)接口和Mapper配置文件必须在一个包下

五、当属性名和字段名不一致的如何解决

(1)方法一:别名

<select id="getUserList" resultType="com.lisi.pojo.User">
        select id , name , pwd as password from mybatis.user;
</select>

(2)方法二:resultMap

    <resultMap id="UserMap" type="com.lisi.pojo.User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="pwd" property="passward"/>
    </resultMap>


    <select id="getUserList" resultMap="UserMap">
        select id , name , pwd as password from mybatis.user;
    </select>

五、分页的实现

(1)Limit实现分页

(2)RowBounds分页

(3)PageHelper插件

六、注解实现CRUD

(1)当有多个参数时所有的参数前面加上 @Param,且@Param中的名称与select中的参数名保持一致。

 @Select("select * from user where id = ${id}")
    
 User getUserById( @Param("id") int id);

设置事务自动提交:

public static SqlSession getSqlSession(){

        return sqlSessionFactory.openSession(true);
}

七、Lombok插件使用

(1)在idea中安装Lombok插件

(2)在项目中导入lombok的jar包

(3)在实体类上加注解

@Date  (无参构造、get、set、tostring、hashcode、equals方法)

@AllArgsConstructor (有参构造)@NoArgsConstructor(无参构造)

优缺点:

(1)简化代码,让开发更加的便捷,大大的节省了开发时间,提高了效率

(2)代码的可读性变差。

八、编写工具类利用UUID.randomUUID().toString()方法生成主键Id

UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法;

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的 形式。

工具类;

package com.lisi.utils;

import org.junit.Test;

import java.util.UUID;

@SuppressWarnings("all")
public class IDutils {
    public static String getId(){
        return UUID.randomUUID().toString().replaceAll("-"," ");
    }
    @Test
    public void test(){
        System.out.println(getId());
        System.out.println(getId());
        System.out.println(getId());
    }
}

测试结果;

九、数据库中字段与Java中属性之间的转换(即数据库中**_***  与Java的驼峰命名法转换)

Mybatis配置文件:

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


如果在数据库中,有一个字段为a_id,那么在javaBean中的属性也必须这样写,写成a_id,这种代码编写方式肯定不符合代码规范。
若开启则: 数据库返回的"order_address"命名字段映射为class的"orderAddress"字段。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值