mybatis搭建过程

本文详细介绍了如何搭建MyBatis框架。首先在Maven项目中添加MyBatis依赖,然后编写MyBatis配置文件,包括数据源、事务管理器、环境配置等。接着配置属性文件和数据源,最后通过映射文件和Mapper接口实现SQL语句的映射。通过SqlSessionUtil工具类和测试类完成数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建MyBatis框架。

步骤:

  1. 首先,在项目中引入MyBatis依赖。在Maven中添加以下依赖:

     

    <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.3</version>
    </dependency>
  2. 接下来,需要编写MyBatis的配置文件。该文件描述了MyBatis应如何连接数据库以及如何映射数据。

    在src/main/resources目录下,创建一个名为mybatis-config.xml的文件,并添加以下内容:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "https://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    ​
        <!--
        MyBatis核心配置文件中的标签必须按照指定的顺序进行配置
        (properties?,settings?,typeAliases?,typeHandlers?,
        objectFactory?,objectWrapperFactory?,plugins?,environments?,
        databaseIdProvider?,mappers?)"
        -->
    ​
        <!--引入properties配置文件,此后就可以在当前文件中使用的方式来访问value-->
        <properties resource="jdbc.properties"/>
    ​
        <!--
            typeAliases:设置类型别名,即为某个具体的类型设置一个别名
            在mybatis的范围中,可以使用别名表示这个具体的类型
            -->
        <typeAliases>
            <!--
            typeAlias:type:设置需要取别名的类型
            alias:设置的别名
            如果不设置alias则默认这个类的类名为别名,且不区分大小写
            -->
            <!--<typeAlias type="com.atguigu.mybatis.pojo.User" alias="abc"></typeAlias>-->
            <!--
            如果文件太多的话可以直接把这个包下面的所有文件都设置别名,使用package标签,那么下面的所有文件都有了默认的别名
            <package name="com.atguigu.mybatis.pojo"/>
            -->
            <package name="com.zhazhawei.mybatis.pojo"/>
    ​
        </typeAliases>
    ​
        <!--
        配置连接数据库的环境
        default:设置默认使用的环境的id
        id:设置环境的唯一标识,不能重复
        -->
        <environments default="development">
    ​
            <environment id="development">
                <!--
                    transactionManager:设置事物管理器
                    属性:
                    type:设置事务管理的方式
                    type=“JDBC/MANAGED”
                    jdbc:表示使用JDBC中原生的管理方式
                    MANAGED:被管理,例如spring
                -->
                <transactionManager type="JDBC"/>
    ​
                <!--
                    dataSource:设置数据源
                    属性:
                    type:设置数据源的类型
                    type=“POOLED/UNPOOLED/JNDI”
                    POOLED:表示使用数据库连接池
                    UNPOOLED:表示不使用数据库连接池,每次使用的时候都会创建连接
                    JNDI:表示使用上下文中的数据源
                -->
                <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>
    ​
    ​
            <environment id="test">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/><!--设置连接的驱动-->
                    <property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/><!--设置连接数据库的地址-->
                    <property name="username" value="root"/><!--设置连接数据库的用户名-->
                    <property name="password" value="123456"/><!--设置连接数据库用户名的密码-->
                </dataSource>
            </environment>
        </environments>
    ​
        <!--引入mybatis的映射文件-->
        <!--sql语句是写入映射文件的,通过这个大的配置文件去访问映射文件来调用里面的sql语句-->
        <mappers>
            <!--<mapper resource="mappers/UserMapper.xml"/>-->
    ​
            <!--
                以包的方式来引入映射文件,但是必须满足两个条件
                1.mapper接口和映射文件所在的包必须一致
                2.mapper接口的名字和映射文件的名字必须一致
            -->
            <package name="com.zhazhawei.mybatis.mapper"/><!--使用package字段可以将这个目录下的所有接口都注册到mybatis中,就不用后续新建接口时重新添加了-->
        </mappers>
    </configuration>

    可以选择使用jdbc配置文件的方式定义连接数据库的地址,也可以通过直接用代码的方式定义数据库的连接信息

    id为development就是使用的配置文件方式

    id为test使用的是直接在代码里明确写好的连接信息。两者都行

    在同级目录下创建jdbc.properties文件,以下是内容,

    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
    jdbc.username=root
    jdbc.password=123456
  3. 创建一个用户类,里面的属性和你数据库中的字段名一致,同时建立他们的空参构造,有参构造,get/set方法。

    package com.atguigu.mybatis.pojo;
    ​
    public class User {
        private Integer id;
        private String username;
        private String password;
        private Integer age;
        private String sex;
        private String email;
    ​
        public User(Integer id, String username, String password, Integer age, String sex, String email) {
            this.id = id;
            this.username = username;
            this.password = password;
            this.age = age;
            this.sex = sex;
            this.email = email;
        }
    ​
        public Integer getId() {
            return id;
        }
    ​
        public void setId(Integer id) {
            this.id = id;
        }
    ​
        public String getUsername() {
            return username;
        }
    ​
        public User() {
        }
    ​
        public void setUsername(String username) {
            this.username = username;
        }
    ​
        public String getPassword() {
            return password;
        }
    ​
        public void setPassword(String password) {
            this.password = password;
        }
    ​
        public Integer getAge() {
            return age;
        }
    ​
        public void setAge(Integer age) {
            this.age = age;
        }
    ​
        public String getSex() {
            return sex;
        }
    ​
        public void setSex(String sex) {
            this.sex = sex;
        }
    ​
        public String getEmail() {
            return email;
        }
    ​
        public void setEmail(String email) {
            this.email = email;
        }
    ​
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", age=" + age +
                    ", sex='" + sex + '\'' +
                    ", email='" + email + '\'' +
                    '}';
        }
    }

  4. 创建一个Mapper接口并定义SQL语句的名、类型、参数等。
    配置文件的名字要和mapper接口的名字一致

     

  5. 在UserMapper.xml文件中编写sql语句。

    您需要将Mapper接口添加到<mappers>标记中。例如,如果您的Mapper接口位于com.example.mapper包中,您可以添加以下行:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    ​
    ​
    <mapper namespace="com.zhazhawei.mybatis.mapper.UserMapper"><!--namespace的地址为你接口的路径-->
    ​
        <!--
            mapper接口和映射文件要保证两个一致!
            1.mapper接口的全类名和映射文件的namespace保持一致
            2.mapper接口中的方法的方法名要和映射文件中的sql的id保持一致!!!
            
            下面这个id必须和你接口中定义的sql语句的名字一致
        -->
        <select id="getUserByUsername" resultType="User">
            select * from t_user where username=#{username}
        </select>
    ​
    </mapper>
  6. 创建一个工具类,目的是调用这个工具类直接获得sqlsession,也就是mybatis提供的数据库操作对象

    package com.atguigu.mybatis.utils;
    ​
    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 java.io.IOException;
    import java.io.InputStream;
    ​
    public class SqlSessionUtil {
        public static SqlSession getSqlSession(){
    //        //获取核心配置文件的输入流
    //        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //        //获取sqlSessionFactoryBuilder对象
    //        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //        //通过sqlSessionFactoryBuilder对象获取配置文件输入流is的SqlSessionFactory对象
    //        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //        //通过SqlSessionFactory对象获取sql的会话对象sqlsession,是mybatis提供的数据库操作对象
    //        SqlSession sqlSession = sqlSessionFactory.openSession();
    //        return sqlSession;
    //
            SqlSession sqlSession = null;
            try {
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
                SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
                sqlSession = sqlSessionFactory.openSession(true);
    ​
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return sqlSession;
        }
    }
    ​
  7. 测试,根据你编写的sql语句进行测试

    package com.zhazhawei.mybatis.test;
    ​
    import com.zhazhawei.mybatis.mapper.SelectMapper;
    import com.zhazhawei.mybatis.pojo.User;
    import com.zhazhawei.mybatis.utils.SqlSessionUtil;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    ​
    import java.util.List;
    import java.util.Map;
    ​
    /*
     * @author     : ZXW
     * @date       : 2023/4/21 17:00
     * @Description:
     */
    public class SelectMapperTest {
        @Test
        public void selectByAll(){
            SqlSession sqlSession = SqlSessionUtil.getSqlSession();
            SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
            List<User> users = mapper.selectAllUsers();
            users.forEach(System.out::println);
        }
    }

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值