Mybatis的简介以及搭建

目录

目录

前言

一、Mybatis的简介

1.什么的Mybatis

2.Mybatis的一些特性

3.Mybatis和其他的持久层技术或者框架的对比

二、如何搭建Mybatis

1.首先创建一个maven工程,添加相关的依赖

2.创建Mybatis的核心配置文件(mybatis-config.xml)

3.配置jdbc.properties文件

4.根据mysql中的数据表创建实体类

5.创建mapper接口

6.创建Mybatis的映射文件(一个映射文件对应一个mapper接口)

7.加入log4j日志功能(非必要)

a > 添加依赖

b > 加入log4j的配置文件(可能会报错,但是不影响的)

8.测试结果

总结

前言

最近刚学完mybatis,就想着写一些笔记加强一下对mybatis的理解以及可以帮助到有需要的人

一、Mybatis的简介

1.什么的Mybatis

mybatis是一个基于java的持久层框架

2.Mybatis的一些特性

① Mybatis是支持定制化SQL、存储过程以及高级映射的一个优秀的持久层框架

② Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集

③ Mybatis可以使用简单的XML或者注解用于配置和原始映射,可以将接口和java的POJO(Plain Old Java Objects,普通的java对象)映射成数据库中的记录

④ Mybatis是一个半自动的ORM(Object Relation Mapping对象关系映射)框架

3.Mybatis和其他的持久层技术或者框架的对比

JDBC

        ① SQL中夹杂在java代码中,耦合度比较高

        ② 不易维护,修改的话会比较频繁

        ③ 代码冗长,并且开发效率很低

Hibernate

        ① 是一个基于全映射的全自动框架,但是对于字段数量很多的POJO想要对其进行部分映射会比较困难

        ② 操作简便,开发效率高

        ③ 需求中的长难复杂的SQL语句则需要绕开框架

        ④ 内部自动产生SQL语句,不容易做特殊优化

        ⑤ 反射操作太多,导致数据库性能下降

Mybatis

        ① 一种轻量级的半自动化的持久层框架,性能比较高

        ② SQL和java编码是分开的,功能边界清晰:java代码专注于业务,SQL语句专注于数据操作

        ③ 开发效率比Hibernate略低,但是完全可以接受

二、如何搭建Mybatis

1.首先创建一个maven工程,添加相关的依赖

<dependencies>
    <!-- Mybatis核心 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    <!-- junit测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- MySQL驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.3</version>
    </dependency>
<dependencies>

2.创建Mybatis的核心配置文件(mybatis-config.xml)

注意:配置文件都是放在src/main/resources目录下的

代码如下(示例):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--引入properties文件-->
    <properties resource="jdbc.properties"></properties>

    <!--设置某个具体类型的 别名-->
    <typeAliases>
        <package name="填入实体类的包名"/>
    </typeAliases>

    <!--设置连接数据库的环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--引入映射文件-->
    <mappers>
        <package name="填入映射文件的包名"/>
    </mappers>
</configuration>

3.配置jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/自己mysql中数据库的名字
jdbc.username=用户名
jdbc.password=密码

4.根据mysql中的数据表创建实体类

例如:

public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String sex;
    private String email;

5.创建mapper接口

例如:

public interface UserMapper {
    //Mybatis中可以面向接口操作数据,要保证两个一致
    //1.mapper接口的全类名和映射文件的命名空间namespace保持一致
    //2.mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致


    /**
     * 添加用户信息
     */
    int insertUser();

    /**
     * 删除用户信息
     */
    int deleteUser();

    /**
     * 修改用户信息
     */
    int updateUser();

    /**
     * 查询一个实体类对象
     * @return
     */
    User getUserById();

    /**
     * 查询User集合
     * @return
     */
    List<User> getUserList();

6.创建Mybatis的映射文件(一个映射文件对应一个mapper接口)

需要注意的是:①  id中的值应该和mapper接口中的方法名保持一致

                        ② 如果是查询语句的话,则需要添加resultType,这个我们在核心配置文件中已经设置了别名,所以只需要将resultType设置为查询到的对象返回值的类名即可

                        ③ 因为在核心配置文件中引用配置文件时是以包为单位,所以 必须保证mapper接口和其对应的映射文件必须在相同的包下,需要值得注意的是,mapper映射文件的包名要用“/”作为层级,如:

mapper接口的包名:

 创建mapper映射文件的包名:

<?xml version="1.0" encoding="UTF-8" ?>
<!--mybatis映射文件-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="对应映射的mapper接口的全类名">

    <!--int insertUser();-->
    <insert id="insertUser">  
        insert into t_user values (null ,'张三', '123', 23, '女','523927@qq.com')
    </insert>

    <!--int deleteUser();-->
    <delete id="deleteUser">
        delete from t_user where id = 2
    </delete>

    <!--int updateUser();-->
    <update id="updateUser">
        update t_user set username='hjw',password='123' where id = 3
    </update>

    <!--User getUserById();-->
    <select id="getUserById" resultType="User">
        select * from t_user where id = 3
    </select>

    <!--List<User> getUserList();-->
    <select id="getUserList" resultType="User">
        select * from t_user
    </select>

</mapper>

7.加入log4j日志功能(非必要)

a > 添加依赖

 <!-- log4j日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

b > 加入log4j的配置文件(可能会报错,但是不影响的)

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n"/>
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug"/>
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info"/>
    </logger>
    <root>
        <level value="debug"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

8.测试结果

@Test
    public void test1() throws Exception{
        //读取mybatis的核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //创建sqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //生成sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //创建sqlSession,并设置为自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //创建UserMapper对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调佣UserMapper中的接口实现方法
        //        mapper.insertUser();
        //        mapper.deleteUser();
        //        mapper.updateUser();
        System.out.println(mapper.getUserById());
        List<User> list =  mapper.getUserList();
        list.forEach(user -> System.out.println(user));
    }


 自此就可以使用mybatis完成一些基本的CURD操作咯!

总结

以上就是关于mybatis的我的一些个人的理解以及笔记,如有错误或者不足的地方欢迎指正!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java路上探索的小H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值