zoukankan      html  css  js  c++  java
  • 01.MyBatis入门

    MyBatis入门:

    第一天接触Mybatis,总结一下入门案例的流程:

    首先导入Mybatis的jar包和数据库的驱动包

    1.创建数据表和实体类

    2.创建一个表和实体类映射的xml配置文件,具体配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper
     3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5   <!-- namespace是映射文件的一个唯一标识,用来定位是哪个映射文件 -->
     6 <mapper namespace="com.offcn.entity.personMapper">
     7     <!-- id是一条sql语句的唯一标识,parameterType是sql语句中的参数类型 ,resultType是sql语句将要返回的结果的类型 -->
     8     <!-- 如果输入的类型是基本数据类型(八种基本数据类型 + string)则#{xxx}可以随意写,但是为了规范最好不要,如果不是基本数据类型则必须写实体类中的字段名 -->
     9   <select id="selectPersonById" parameterType="int" resultType="com.offcn.entity.Person">
    10     select * from Person where id = #{id}
    11   </select>
    12   <!-- sql语句后边不加分号 -->
    13   
    14   <insert id="insertPerson" parameterType="com.offcn.entity.Person">
    15       insert into Person (id,name,bir,address) value (#{id},#{name},#{bir},#{address})
    16   </insert>
    17   
    18   <delete id="deletePersonById" parameterType="int">
    19       delete from Person where id = #{id}
    20   </delete>
    21   
    22   <update id="updatePerson" parameterType="com.offcn.entity.Person">
    23       update person set name=#{name},bir=#{bir},address=#{address} where id = #{id}
    24   </update>
    25   
    26   <select id="selectPerson" resultType="com.offcn.entity.Person">
    27       select * from person
    28   </select>
    29   
    30 </mapper>

    3.编写全局配置文件conf.xml,包含数据库信息和映射文件信息,代码如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration
     3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <!-- 环境的配置,可以配置多个,可以通过default该换id定位使用哪个环境,也可以通过 sessionFactory的第二个参数设置-->
     7   <environments default="development">
     8     <environment id="development">
     9         <!-- 配置事物的提交方式,一共有两种
    10             1.JDBC:利用JDBC的方式处理事务,需要手动提交(commit,rollback,close)
    11             2.MANAGED:将事务由其他组件托管(spring,jobss),默认会关闭连接,如果想要自动关闭连接需要配置一个属性
    12              <property name="driver" value="false"/>
    13          -->
    14       <transactionManager type="JDBC"/>   <!-- 后边的斜杠不能省略 -->
    15      
    16       <!-- 数据源格式类型:
    17           1.POOLED:数据连接池模式
    18           2.UNPOOLED:传统的jdbc模式,每次都需要自己手动创建关闭
    19           3.JNDI:从tomcat中获取一个内置的数据库连接池
    20        -->
    21       <dataSource type="POOLED">
    22         <property name="driver" value="com.mysql.jdbc.Driver"/>
    23         <property name="url" value="jdbc:mysql://localhost:3306/person?serviceTimeout=UTC"/>
    24         <property name="username" value="root"/>
    25         <property name="password" value="root"/>
    26       </dataSource>
    27     </environment>
    28   </environments>
    29   <mappers>
    30     <mapper resource="com/offcn/entity/personMapper.xml"/>
    31   </mappers>
    32 </configuration>

    3.写一个测试类,进行增删改查的测试,步骤如下:

      1 package com.offcn.entity;
      2 
      3 import java.io.IOException;
      4 import java.io.Reader;
      5 import java.util.Date;
      6 import java.util.List;
      7 
      8 import org.apache.ibatis.io.Resources;
      9 import org.apache.ibatis.session.SqlSession;
     10 import org.apache.ibatis.session.SqlSessionFactory;
     11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     12 
     13 public class Test {
     14     public static void main(String[] args) throws IOException {
     15     //    selectPerosnById();
     16         //insertPerson();
     17         //deletePersonById();
     18         //updatePerson();
     19         selectPerson();
     20     }
     21     //根据id查询
     22     public static void selectPerosnById() throws IOException {
     23         //读取conf.xml 配置文件
     24         Reader reader = Resources.getResourceAsReader("conf.xml");
     25         //创建sqlSessionFactory
     26         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
     27         //创建session---> connection
     28         SqlSession session = sessionFactory.openSession();
     29         //statement ---> statement
     30         String sql = "com.offcn.entity.personMapper." + "selectPersonById";
     31         //查询一条数据
     32         Person person = session.selectOne(sql,1);
     33         //提交事务
     34         session.commit();
     35         System.out.println(person);
     36         //关闭连接
     37         session.close();
     38         
     39     }
     40     //增加一条数据
     41     public static void insertPerson() throws IOException {
     42         //读取conf.xml文件
     43         Reader reader = Resources.getResourceAsReader("conf.xml");
     44         //创建一个sqlSessionFactory
     45         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
     46         //创建一个session对象
     47         SqlSession session = sessionFactory.openSession();
     48         //定位sql语句
     49         String statement = "com.offcn.entity.personMapper." + "insertPerson";
     50         //执行sql语句
     51         Person person = new Person("李四",new Date(),"上海普陀");
     52         int count = session.insert(statement,person);
     53         //提交事务
     54         session.commit();
     55         System.out.println("增加"+count+"条数据");
     56         //关闭连接
     57         session.close();
     58     }
     59     //根据id删除一条数据
     60     public static void deletePersonById() throws IOException {
     61         //读取conf.xml文件
     62         Reader reader = Resources.getResourceAsReader("conf.xml");
     63         //获取sqlSessionFactory
     64         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
     65         //获取session对象
     66         SqlSession session = sessionFactory.openSession();
     67         //定位sql语句
     68         String statement = "com.offcn.entity.personMapper."+"deletePersonById";
     69         //执行sql语句
     70         int count = session.delete(statement,2);
     71         //提交事务
     72         session.commit();
     73         System.out.println("删除"+count+"条数据");
     74         //关闭连接
     75         session.close();
     76     }
     77     //更改数据
     78     public static void updatePerson() throws IOException {
     79         //读取conf.xml
     80         Reader reader = Resources.getResourceAsReader("conf.xml");
     81         //创建sqlSessionFactory
     82         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
     83         //创建sqlsession对象
     84         SqlSession session = sessionFactory.openSession();
     85         //定位sql
     86         String statement = "com.offcn.entity.personMapper." + "updatePerson";
     87         //执行sql语句
     88         Person person = new Person();
     89         person.setName("王五");
     90         person.setBir(new Date());
     91         person.setAddress("南京");
     92         person.setId(1);
     93         int count = session.update(statement,person);
     94         //提交事务
     95         session.commit();
     96         System.out.println("更改" + count +"条数据成功");
     97         //关闭连接
     98         session.close();
     99     }
    100     //查询所有数据
    101     public static void selectPerson() throws IOException {
    102         //读取conf.xml
    103         Reader reader = Resources.getResourceAsReader("conf.xml");
    104         //创建sqlSessionFactory
    105         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    106         //创建sqlsession对象
    107         SqlSession session = sessionFactory.openSession();
    108         //定位sql
    109         String statement = "com.offcn.entity.personMapper." + "selectPerson";
    110         //执行sql语句
    111         List<Person> persons = session.selectList(statement);
    112         //提交事务
    113         session.commit();
    114         for (Person person : persons) {
    115             System.out.println(person);
    116         }
    117         
    118         //关闭连接
    119         session.close();
    120     }
    121 }

    到此就完成了一个Mybatis的入门程序。

  • 相关阅读:
    Redisson分布式锁学习总结:公平锁 RedissonFairLock#lock 获取锁源码分析
    Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析
    Redisson分布式锁学习总结:公平锁 RedissonFairLock#unLock 释放锁源码分析
    npm更改为淘宝镜像
    博客园统计阅读量
    自动下载MarkDown格式会议论文的程序
    修改linux ll 命令的日期显示格式
    Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
    Log4j2 Jndi 漏洞原理解析、复盘
    一个菜鸡技术人员,很另类的总结
  • 原文地址:https://www.cnblogs.com/man-tou/p/11332626.html
Copyright © 2011-2022 走看看