Mybatis的基本操作步骤

本人小白,也在学习中,记录一下学习过程。如果文案有错误与不足,欢迎指正,共同进步。

一、创建项目
选择maven工程

二、配置pom.xml文件
1、选择打包方式
使用<packaging> </packaging>标签,中间填打包方式,有jar、war等
2、添加依赖dependency

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
		</dependencies>

<dependencies></dependencies>标签中添加所需要的依赖,一般使用Mybatis连接数据库,有mybatis和mysql-connector-java就行了。如果需要进行单元测试,还可以添加junit依赖。

三、在resources下添加主配置文件SqlMapConfig.xml
1、在开头添加

<?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">

2、添加相关配置

<configuration>
    <!--配置properties
        可以在标签内部配置连接数据库的信息;也可以通过属性引用外部配置环境信息
        resource属性;用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下
        url属性:是按照URL的写法来写地址。
            URL:Uniform Resource Locator 统一资源定位符。它可以唯一标识一个资源的位置
            它的写法:
                http://localhost:8080/mybatissever/demolservlet
                协议    主机       端口     URI
            URL:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定义一个资源的
    -->
    <properties resource="jdbcConfig.properties"><!--或者用url写--></properties>
    
    <!--配置参数-->
    <settings>
        <!--开启mybatis支持延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>

    <!--使用typeAliases配置别名,它只能配置domain中类的别名-->
    <typeAliases>
        <!--type属性指定实体类全限定类名,alias属性指定别名,当指定了别名就不在区分大小写
        <typeAlias type="com.example.domain.User" alias="user"></typeAlias>-->
        <!--用于指定需要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不在区分大小写-->
        <package name="com.example.domain"></package>
    </typeAliases>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
            <!--配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源(连接池)-->
            <dataSource type="POOLED">
                <!--配置连接数据库的4个基本信息-->
                <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>
    <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
    <mappers>
<!--        <mapper resource="com/example/dao/UserDao.xml"/>-->
        <!--package标签是用于指定dao接口所在的包,当指定了之后就不需要再写mapper以及resource或者class了-->
        <package name="com.example.dao"></package>
    </mappers>
    
</configuration>

上图中注释写的比较详细了,我就简单讲讲
(1)其中<properties>标签中写连接数据库的相关信息,本案例中是使用通过配置文件jdbcConfig.properties中的相关信息来连接数据库的。该文件请自己创建,与主配置文件同级
(2)<settings>中是一些参数设置,如果简单使用mybatis可以不去考虑
(3)<typeAliases>配置类的别名,方便后面的使用,不配置也没有什么问题,写全限定类名就行
(4)重要的是<environments default="mysql">的环境配置,这是连接数据库的关键
(5)<mappers>是用于配置反射的

四、创建于数据库对应的类和接口
本案例中目录结构如下
com.example.domian 该目录下下对应的类
com.example.dao 该目录下写类对应的接口
类的定义中最好实现Serializable序列化接口

public class User implements Serializable 

1、建议成员变量的名称与对应表的字段名称相同,便于后续操作
2、同时生成成员变量的get()、set()和toString()方法
3、在接口中定义增删改查的对应方法

public interface UserDao {
    //查询所有用户,查操作
    List<User> findAll();
    //保存用户,增操作
    void saveUser(User user);
    }

五、用xml配置文件或注解的方式实现对应功能
1、用xml配置文件的方式
在resources下建立与dao接口同样的目录结构,并在与dao接口同级的目录下添加对应的xxx.xml文件。(注意:xxx必须与接口同名,如接口为IUserDao,则配置文件名为IUserDao.xml
(1)在配置文件中添加

<?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">

(2)在<mapper namespace="com.example.dao.UserDao">标签中使用相关标签实现功能

<!--id属性的取指必须是dao接口的方法名-->
    <select id="findAll" resultType="com.example.domain.User">
        select *from user 
    </select>
    <!--保存用户,增操作-->
    <insert id="saveUser" parameterType="com.example.domain.User">
        insert into user (id,username,birthday,sex,address)value (#{id},#{username},#{birthday},#{sex},#{address})
    </insert>

这里在保存操作中可以直接使用成员变量名的原因就在于,定义的成员变量名与数据库表的的字段名是一样的。
resultType、parameterType两个属性表示返回值类型与参数类型

2、使用注解的方式
(1)不需要添加对应的xxx.xml文件
(2)在dao接口对应的方法上添加对应的注解

public interface IUserDao {
    @Select("select * from user")
    List<User> findAll();

    @Insert("insert into user (id,username,birthday,sex,address)value (#{id},#{username},#{birthday},#{sex},#{address})")
    void SaveUser(User user);
}

sql语句直接写在注解中

六、对方法进行测试
1、在test.java目录下建立类似的目录结构
如:com.example.test
2、建立对应的测试类,使用junit进行测试

public class MybatisTest {
    private InputStream in;
    private SqlSession session;
    private UserDao userDao;
    @Before//用于在测试方法执行之前执行
    public void initail() throws IOException{
        //1、读取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2、创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        SqlSessionFactory factory=builder.build(in);
        //3、使用工厂生产SqlSession对象
        session=factory.openSession();//()中写true的话,表示自动提交,后面就不用提交了
        //4、使用SqlSession创建Dao接口的代理对象
        userDao=session.getMapper(UserDao.class);
    }
    @After//用于在测试方法执行之后执行
    public void destory() throws IOException {
        //提交事务
        session.commit();
        //6、释放资源
        session.close();
        in.close();
    }
    //入门案例
    @Test
    public void testFindAll()  {
        //5、使用代理对象执行方法
        List<User> users=userDao.findAll();
        for(User user:users){
            System.out.println(user);
        }


    }
}

以上只是一些mybatis的基本步骤,具体细节还请自行学习,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KinLiowav

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

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

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

打赏作者

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

抵扣说明:

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

余额充值