Mybatis入门(增删改查)

本文详细介绍了Mybatis框架的介绍、优势以及一个简单的入门案例。Mybatis是一款优秀的持久层框架,以其简单易学、灵活性高、解除SQL与代码耦合等优势受到广泛使用。案例中展示了从创建数据表、实体类、核心配置文件到映射XML文件的全过程,最后通过创建SqlSessionFactory对象并完成CRUD操作,帮助读者快速理解Mybatis的使用方法。
摘要由CSDN通过智能技术生成

目录

 

Mybatis介绍

Mybatis的优势

Mybatis入门案例

创建数据表

创建实体类(省略get  set方法)​

创建核心配置文件

创建一个映射xml文件

把映射文件注册在mybatis核心配置文件中

添加资源插件

创建SqlSessionFactory对象

完成CRUD


Mybatis介绍

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录.

Mybatis的优势

  1. 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  2. 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  3. 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  4. 提供映射标签,支持对象与数据库的orm字段关系映射
  5. 提供对象关系映射标签,支持对象关系组建维护
  6. 提供xml标签,支持编写动态sql。

Mybatis入门案例

  1. 创建一个maven  Java工程

  2. 引入相关依赖

             <dependency>
                 <groupId>org.mybatis</groupId>
                 <artifactId>mybatis</artifactId>
                 <version>3.4.6</version>
             </dependency>
             <dependency>
                 <groupId>mysql</groupId>
                 <artifactId>mysql-connector-java</artifactId>
                 <version>5.1.47</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.logging.log4j</groupId>
                 <artifactId>log4j-core</artifactId>
                 <version>2.12.1</version>
             </dependency>

     

  3. 创建数据表

    CREATE TABLE person(
       id INT NOT NULL AUTO_INCREMENT,
       NAME VARCHAR(30),
       gender VARCHAR(6),
       age INT,
       birthday DATE,
       PRIMARY KEY(id)
    );

     

  4. 创建实体类(省略get  set方法)

  5. 创建核心配置文件
     

    <!--在resources目录创建一个mybatis的核心配置文件,改配置文件可以是任意的名字。SqlMapConfig.xml  mybatis-cfg.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>
        <!--development或者worker-->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///803mbatis01"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
    </configuration>

     

  6. 创建一个映射xml文件

    <?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">
    <!--namespace命名空间,该命名空间为唯一 -->
    <mapper namespace="cn.offcn.PersonMapper">
          <!-- id属性是一个唯一标识,类拟于方法名,parameterType 表示输入参数类型-->
        <!-- #{}表示mybatis中的占位符,如果传递参数为对象,#{}中必须填写对象中属性名 -->
          <insert id="addPerson" parameterType="cn.offcn.entity.Person">
              insert into person(name,gender,age,birthday) values(#{name},#{gender},#{age},#{birthday})
          </insert>
    
    
    </mapper>

     

  7. 把映射文件注册在mybatis核心配置文件中

    <mappers>
            <mapper resource="cn/offcn/entity/PersonMapper.xml"></mapper>
    </mappers>

     

  8. 添加资源插件

       <!--如何让mapper映射文件放到src/main/java包下,这时maven不会把该包下的任何配置文件加入到classpath中,如果想让资源文件部署到classpath中,需要加入资源插件-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
        </build>

     

  9. 创建SqlSessionFactory对象

    public static void main(String[] args) throws Exception{
            //1. 创建mybatis核心配置文件的输入流对象
            InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
            //2. 创建SqlSessionFactory对象  相当于jdbc中DriverManager
            SqlSessionFactory sqlSessionFactory=new 
    SqlSessionFactoryBuilder().build(inputStream);      
        }

     

  10. 完成CRUD

    <?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">
    <!--namespace命名空间,该命名空间为唯一 -->
    <mapper namespace="cn.offcn.PersonMapper">
          <!-- id属性是一个唯一标识,类拟于方法名,parameterType 表示输入参数类型-->
        <!-- #{}表示mybatis中的占位符,如何传递参数为对象,#{}中必须填写对象中属性名 -->
          <insert id="addPerson" parameterType="cn.offcn.entity.Person">
              insert into person(name,gender,age,birthday) values(#{name},#{gender},#{age},#{birthday})
          </insert>
    
          <delete id="deletePerson" parameterType="int">
                 delete from person where id=#{id}
          </delete>
    
          <update id="updatePerson" parameterType="cn.offcn.entity.Person">
                 update person set name=#{name},gender=#{gender},age=#{age},birthday=#{birthday} where id=#{id}
          </update>
    
          <select id="getPersonById" parameterType="int" resultType="cn.offcn.entity.Person">
                select * from person where id=#{id}
          </select>
    
          <select id="getPersons" resultType="cn.offcn.entity.Person">
                 select * from person
          </select>
    </mapper>
    public class PersonTest {
    
    
        public static void addPerosn()throws Exception{
            //1. 创建mybatis核心配置文件的输入流对象
            InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
            //2. 创建SqlSessionFactory对象  相当于jdbc中DriverManager
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //3.获取SqlSession对象 相当于jdbc中Connection
            SqlSession session=sqlSessionFactory.openSession();
            //4. 调用sqlSession中的insert方法
            String statement="cn.offcn.PersonMapper.addPerson";
            Person person=new Person("李四","女",23,new Date());
            session.insert(statement,person);
            //5. 提交事务
            session.commit();
            //6.关闭session对象
            session.close();
        }
    
        public static void getPersonById(int id)throws Exception{
            //1. 创建mybatis核心配置文件的输入流对象
            InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
            //2. 创建SqlSessionFactory对象  相当于jdbc中DriverManager
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //3.获取SqlSession对象 相当于jdbc中Connection
            SqlSession session=sqlSessionFactory.openSession();
            //4. 调用sqlSession中的insert方法
            String statement="cn.offcn.PersonMapper.getPersonById";
            Person person=session.selectOne(statement,id);
            System.out.println(person);
            //5. 提交事务
            session.commit();
            //6.关闭session对象
            session.close();
        }
    
        public static void getPersons()throws Exception{
            //1. 创建mybatis核心配置文件的输入流对象
            InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
            //2. 创建SqlSessionFactory对象  相当于jdbc中DriverManager
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //3.获取SqlSession对象 相当于jdbc中Connection
            SqlSession session=sqlSessionFactory.openSession();
            //4. 调用sqlSession中的insert方法
            String statement="cn.offcn.PersonMapper.getPersons";
            List<Person> personList=  session.selectList(statement);
            for (Person person : personList) {
                System.out.println(person);
            }
    
            //5. 提交事务
            session.commit();
            //6.关闭session对象
            session.close();
        }
    
        public static void updatePerson(int id)throws Exception{
            //1. 创建mybatis核心配置文件的输入流对象
            InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
            //2. 创建SqlSessionFactory对象  相当于jdbc中DriverManager
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //3.获取SqlSession对象 相当于jdbc中Connection
            SqlSession session=sqlSessionFactory.openSession();
            //4. 调用sqlSession中的insert方法
            String statement="cn.offcn.PersonMapper.getPersonById";
            Person person=session.selectOne(statement,id);
            person.setName("王五");
            person.setAge(30);
            statement="cn.offcn.PersonMapper.updatePerson";
            session.update(statement,person);
            //5. 提交事务
            session.commit();
            //6.关闭session对象
            session.close();
        }
    
        public static void deletePerson(int id)throws Exception{
            //1. 创建mybatis核心配置文件的输入流对象
            InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
            //2. 创建SqlSessionFactory对象  相当于jdbc中DriverManager
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //3.获取SqlSession对象 相当于jdbc中Connection
            SqlSession session=sqlSessionFactory.openSession();
            //4. 调用sqlSession中的insert方法
            String statement="cn.offcn.PersonMapper.deletePerson";
            session.delete(statement,id);
            //5. 提交事务
            session.commit();
            //6.关闭session对象
            session.close();
        }
    
        public static void main(String[] args) throws Exception{
            deletePerson(1);
        }
    }

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值