zoukankan      html  css  js  c++  java
  • 学习Mybatis与mysql数据库的示例笔记

    目录结构:

    pom.xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>xfj.mac</groupId>
     8     <artifactId>MyBatisOne</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10     <packaging>pom</packaging>
    11 
    12     <dependencies>
    13         <dependency>
    14             <groupId>junit</groupId>
    15             <artifactId>junit</artifactId>
    16             <version>4.12</version>
    17         </dependency>
    18            <!-- mybatis的依赖配置-->
    19         <dependency>
    20             <groupId>org.mybatis</groupId>
    21             <artifactId>mybatis</artifactId>
    22             <version>3.4.5</version>
    23         </dependency>
    24         <dependency>
    25             <groupId>mysql</groupId>
    26             <artifactId>mysql-connector-java</artifactId>
    27             <version>5.1.28</version>
    28         </dependency>
    29     </dependencies>
    30 
    31     <build>
    32         <plugins>
    33             <plugin>
    34                 <artifactId>maven-compiler-plugin</artifactId>
    35                 <configuration>
    36                     <target>1.8</target>
    37                     <source>1.8</source>
    38                     <encoding>UTF-8</encoding>
    39                 </configuration>
    40             </plugin>
    41         </plugins>
    42     </build>
    43 
    44 </project>

     mybatis.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     4 
     5 <configuration>
     6     <!-- 类型别名,意思就是给实体在使用的过程中起一个别名引用 -->
     7     <typeAliases>
     8         <!-- 方式一:给每一个实体类定义一个别名,通过alias制定别名 -->
     9         <!--<typeAlias type="edu.nf.ch01.entity.Users" alias="user"/>-->
    10 
    11         <!-- 方式二:直接给实体所在的包来指定别名,那么别名就是实体的类名,
    12                     并将首字母变为小写-->
    13         <package name="xfj.mybatis.entity"/>
    14     </typeAliases>
    15 
    16     <!-- environments用于配置数据源环境,可以同时指定多个数据源环境,
    17          通过default属性来指定默认使用的数据源,对应的就是environment的id属性-->
    18     <environments default="mysql">
    19         <!-- 每一个environment都是一个独立的数据源环境配置,id指定唯一标识-->
    20         <environment id="mysql">
    21             <!-- 指定为使用本地事务,也就是JDBC事务 -->
    22             <transactionManager type="JDBC"/>
    23             <!-- mybatis本身就内置一个连接池,可以直接使用 -->
    24             <dataSource type="POOLED">
    25                 <!-- 配置连接信息 -->
    26                 <property name="driver" value="com.mysql.jdbc.Driver"/>
    27                 <property name="url" value="jdbc:mysql://192.168.10.17:3306/mac_demo?useUnicode=true&amp;characterEncoding=utf-8&amp;"/>
    28                 <property name="username" value="root"/>
    29                 <property name="password" value="123456"/>
    30             </dataSource>
    31         </environment>
    32     </environments>
    33 
    34     <!-- 指定mapper配置文件的相对路径 -->
    35     <mappers>
    36         <mapper resource="mapper/UserDao.xml"/>
    37     </mappers>
    38 </configuration>

    userDao.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">
    <!-- mapper指定要映射的Dao接口的完整类名,通过namespace属性指定-->
    <mapper namespace="xfj.mybatis.dao.UserDao">
    
        <!-- 通过insert节点来映射UserDao中的saveUser方法,
             id指定接口中的方法名,parameterType指定参数的类型,
             这里直接引用在mybatis.xml中定义的别名-->
        <!-- 在<insert>标签内部编写相应的sql语句,并指定sql参数,
             sql参数使用#{属性名}来获取对象中的属性值-->
        <insert id="insertUser" parameterType="user">
            INSERT INTO MAC_USER VALUES(#{userId},#{userName},#{phone})
        </insert>
    
        <!--&lt;!&ndash; 如果parameterType是Map类型,
             那么#{}中的参数对应的是map的key &ndash;&gt;
        <insert id="saveUser2" parameterType="java.util.Map">
            INSERT INTO USER_INFO VALUES(#{uid},#{tel},#{uname})
        </insert>
    
        &lt;!&ndash; 映射修改语句 &ndash;&gt;
        <update id="updateUser" parameterType="users">
            UPDATE USER_INFO SET U_NAME = #{userName} WHERE U_ID = #{uid}
        </update>
    -->
       <!-- &lt;!&ndash; 映射删除语句
             parameterType指定为String类型,也可以是其他的基本数据类型
             注意:当参数只有一个,并且不是一个实体对象的时候,
             那么#{}中的变量名可以任意&ndash;&gt;-->
        <delete id="deleteUser" parameterType="user">
            DELETE FROM MAC_USER WHERE user_id = #{userId}
        </delete>
    
    </mapper>

    User.java

     1 package xfj.mybatis.entity;
     2 
     3 public class User {
     4 
     5     private Integer userId ;
     6 
     7     private String userName ;
     8 
     9     private String phone ;
    10 
    11     public Integer getUserId() {
    12         return userId;
    13     }
    14 
    15     public void setUserId(Integer userId) {
    16         this.userId = userId;
    17     }
    18 
    19     public String getUserName() {
    20         return userName;
    21     }
    22 
    23     public void setUserName(String userName) {
    24         this.userName = userName;
    25     }
    26 
    27     public String getPhone() {
    28         return phone;
    29     }
    30 
    31     public void setPhone(String phone) {
    32         this.phone = phone;
    33     }
    34 }

    UserDao.java

    package xfj.mybatis.dao;
    
    import xfj.mybatis.entity.User;
    
    public interface UserDao {
    
            void insertUser(User user) ;
    
            void deleteUser(Integer userId) ;
    
    }

    UserDaoImpl.java

    package xfj.mybatis.dao.impl;
    
    import org.apache.ibatis.session.SqlSession;
    import xfj.mybatis.dao.UserDao;
    import xfj.mybatis.entity.User;
    import xfj.mybatis.utils.MybatisUtl;
    
    public class UserDaoImpl implements UserDao {
    
    
            SqlSession session =  MybatisUtl.getSqlSession() ;
    
        @Override
        public void insertUser(User user) {
    
           //SqlSession session =  MybatisUtl.getSqlSession() ;
    
    
            try {
                //执行保存操作
                session.getMapper(UserDao.class).insertUser(user);
            }catch(RuntimeException e){
                e.printStackTrace();
                //事务回滚
                session.rollback();
            }finally{
                //关闭session
                session.close();
            }
        }
    
        @Override
        public void deleteUser(Integer userId) {
    
            try {
                //执行删除操作
                session.getMapper(UserDao.class).deleteUser(userId);
            }catch (RuntimeException e){
                e.printStackTrace();
                session.rollback();
            }finally {
                session.close();
            }
        }
    }

    MybatisUtil.java

    package xfj.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 MybatisUtl {
    
        /*定义SqlSessionFactory ,用来创建实例化sessionFactory*/
        private static SqlSessionFactory sqlSessionFactory ;
    
        static {
            try {
                //通过mybatis核心额配置文件,并创建一个输入流用来读取xml文件
               InputStream is =  Resources.getResourceAsStream("mybatis.xml") ;
               //创建一个SqlSessionFactoryBuilder构建器来实例化一个SqlSessionFactory,
                //build方法传入一个输入流来解析配置文件,从而创建SqlSessionFactory
              sqlSessionFactory =  new SqlSessionFactoryBuilder().build(is) ;
            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException("mybatisUtil error!!") ;
            }
        }
    
        //创建一个获取sqlsession的静态方法
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession(true) ;
        }
    
        public static void main(String[] args) {
            System.out.println(getSqlSession());
        }
    
    
    }

    UserDaoTest.java测试类:

    package xfj.mybatis.test;
    
    import org.junit.Test;
    import xfj.mybatis.dao.UserDao;
    import xfj.mybatis.dao.impl.UserDaoImpl;
    import xfj.mybatis.entity.User;
    
    public class UserDaoTest {
    
    
        /*@Test
       public void insertUser(){
            User user1 = new User() ;
            user1.setUserId(13);
            user1.setUserName("恭喜");
            user1.setPhone("1265416989");
    
            userDao.insertUser(user1);
        }*/
        @Test
        public void deleteUser(){
            UserDao userDao = new UserDaoImpl() ;
            //User user = new User() ;
            userDao.deleteUser(4);
    
        }
    }

    mybatis入门学习笔记,comeon

  • 相关阅读:
    Linux常用命令大全详解
    C++语言关键字及注解
    求两数的最大公约数
    ICOP完成端口详解
    C/C++常见面试题
    猴子吃桃问题之《C语言经典案例分析》
    DTD
    DTD
    DTD的使用
    Rust
  • 原文地址:https://www.cnblogs.com/aa1314/p/8618602.html
Copyright © 2011-2022 走看看