MyBatis——初识MyBatis与原生接口使用详解编程语言

MyBatis就是一个ORM(Object Relation Mapping)框架。在以前我们可能会用Java自带的JDBC,可是JDBC代码太冗余了,MaBatis对JDBC做了一个封装,提高我们的效率。具体是怎么提高效率的呢?MyBatis将SQL写在XML文件中,将其与Java代码分离,降低了耦合度,提高开发效率。

所以根据上述简单理解,MyBatis使我们的程序可以动态的编写XML文件,并提供映射标签,支持了对象与数据库字段的一一映射。

SqlSession

SqlSession就是MaBatis里Java程序与数据库打交道的那个切入口,这个类又创建它的工厂SqlSessionFactory通过openSession产生,而SqlSessionFactory则是由它的建造者SqlSessionFactoryBuilder通过build方法构建而出
SqlSessionFactoryBuilder -> SqlSessionFactory -> SqlSession

我们开发都是调用SqlSession的各种API进行开发。

在pom文件里导入下面依赖,Mabatis环境就算搭建成功了

    <dependencies> 
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> 
        <dependency> 
            <groupId>org.mybatis</groupId> 
            <artifactId>mybatis</artifactId> 
            <version>3.4.5</version> 
        </dependency> 
 
        <dependency> 
            <groupId>mysql</groupId> 
            <artifactId>mysql-connector-java</artifactId> 
            <version>5.1.48</version> 
        </dependency> 
    </dependencies> 

接下来我们搞出这样一张叫做mybatis_account的表和下面这个对应的DO类,所有的前置工作我们就做完了。
在这里插入图片描述
在这里插入图片描述
接下来进入MyBatis的环节

创建Mybatis配置文件

我们在resources -> mybatis目录下创建mybatis-config.xml文件

<?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> 
<!--    注意如果用SpringBoot,这些配置都可以用@Configuration类来写,这里面只用配置mapper就行 
        所以下面的环境配置可以写成这样 
        @Configuration 
        public class TransactionManagerConfig {
    
 
            @Bean(name="environment1") 
            public PlatformTransactionManager TransactionManager1(@Qualifier("dataSource1") DataSource dataSource1) {
    
                return new DataSourceTransactionManager(dataSource1); 
            } 
 
            @Bean(name="environment2") 
            public PlatformTransactionManager TransactionManage2r(@Qualifier("dataSource2") DataSource dataSource2) {
    
                return new DataSourceTransactionManager(dataSource2); 
            } 
        } 
 
--> 
 
<!--    如果我们有多个数据库这里就可以配置多个数据源,然后在default--> 
    <environments default="MyBatisLearning"> 
        <environment id="MyBatisLearning"> 
<!--            配置当前环境的事务管理--> 
            <transactionManager type="JDBC"></transactionManager> 
<!--            数据源,也就是要跟哪个数据库链接--> 
            <dataSource type="POOLED"> 
                <property name="driver" value="com.mysql.jdbc.Driver"/> 
                <property name="url" value="jdbc:mysql://localhost:3306/tx"/> 
                <property name="username" value="root"/> 
                <property name="password" value="root"/> 
            </dataSource> 
        </environment> 
    </environments> 
</configuration> 

如何使用Mybatis写SQL语句

Mybatis有两种使用方式,第一个是使用原生接口,第二个是使用自定义的mapper代理(这个文件俗称mapper.xml)。在开发中我们需要对每一个DO写这样的mapper.xml,方便我们对每一个DO进行SQL操作。

Mapper.xml

重点介绍一下Mapper里的重要标签
<insert> , <delete> , <update>, <select>
下面以insert举例,delete、update、select类同

<!--我们在resources -> sqlmapper目录下创建MyBatisAccountDAO.xml--> 
<!-- id是实际调用MyBatis方法时用到的参数,parameterType是对应DO的类名--> 
<!--namespace理论上可以乱起,但建议写成对应DAO的全限定名,这会在mapper代理起作用--> 
<mapper namespace="com.test.dao.MybatisAccountDO"> 
  <insert id="insert" parameterType="com.test.entity.MybatisAccountDO"> 
    <!-- 
      下面是具体的SQL语句,#{..}表示取对应属性的值,这个属性一定要和DO里的成员变量名对应,还可以用过jdbcType设定类型 
    --> 
    insert into mybatis_account (id, username, password,  
      age) 
    values (#{id,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},  
      #{age,jdbcType=INTEGER}) 
  </insert> 
</mapper> 

然后在全局配置文件mybatis-config.xml中注册这个mapper就大功告成了

    <mappers> 
        <mapper resource="sqlmapper/MybatisAccountDAO.xml"></mapper> 
    </mappers> 

别忘了在com.test包下创建dao包,创建MybatisAccountDAO(这个DAO在本示例中没用,但是别忘了它,我们在mapper代理的学习中会用到它)

public interface MybatisAccountDAO{
    
    int insert(MybatisAccountDO record); 
} 

最后我们在测试方法中写如下的方法就可以测试成功

public class Test {
    
    @Test 
    public void test(){
    
        //在build时要以流的方式加载Mybatis配置文件 
        SqlSession sqlSession = new SqlSessionFactoryBuilder() 
            .build(Test.class.getClassLoader().getResourceAsStream("mybatis/mybatis-config.xml")) 
            .openSession(); 
 
	//这个statement的写法是mapper.xml里的namespace+id的组合方式 
        String statement = "com.test.MybatisAccountDAO.insert"; 
        MybatisAccountDO ma = new MybatisAccountDO(1L,"frank","samsung",24); 
 
        sqlSession.insert(statement,ma); 
        sqlSession.commit(); 
        sqlSession.close(); 
    } 
} 

由上面的方法可以看出,我们只要有了对应的DO类,就可以用MyBatis帮我们操作数据库了,那我们的DAO还有什么妙用呢,见下一篇博客(MyBatis——mapper代理)。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20573.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论