• Mybatis之执行自定义SQL举例


    本文说明如何使用Mybatis执行我自定义输入的SQL语句。

    需要的mybaits文件包括:配置文件(mybatis-config-dao.xml 和 jdbc.properties)、接口文件(ISqlMapper.class)、xml文件 (sqlMapper.xml)、工具类(MybatisUtils.class)。

    依赖包:

     1         <dependency>
     2             <groupId>org.mybatis</groupId>
     3             <artifactId>mybatis</artifactId>
     4             <version>3.4.6</version>
     5         </dependency>
     6 
     7         <dependency>
     8             <groupId>mysql</groupId>
     9             <artifactId>mysql-connector-java</artifactId>
    10             <version>5.1.47</version>
    11         </dependency>

    mybatis配置文件:

    mybatis-config-dao.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     <!--从外部配置文件导入jdbc信息-->
     7     <properties resource="config/jdbc.properties"></properties>
     8 
     9     <environments default="development">
    10         <environment id="development">
    11             <transactionManager type="JDBC"/>
    12             <dataSource type="POOLED">
    13                 <property name="driver" value="${driver}"/>
    14                 <property name="url" value="${url}"/>
    15                 <property name="username" value="${username}"/>
    16                 <property name="password" value="${password}"/>
    17             </dataSource>
    18         </environment>
    19     </environments>
    20 
    21     <!--指定映射资源文件-->
    22     <mappers>
    23         <mapper resource="mapper/shelby/userMapper.xml"/>
    24         <mapper resource="mapper/shelby/sqlMapper.xml"/>
    25     </mappers>
    26 
    27 </configuration>

    jdbc.properties

    # jdbc连接信息
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://10.15.1.232:3306/maserati_x??zeroDateTimeBehavior=convertToNull&amp;useUnicode=true&amp;characterEncoding=utf-8
    username=root
    password=

    接口文件 ISqlMapper.class

     1 package testTraffic.mapper.shelby;
     2 
     3 import java.util.List;
     4 import java.util.Map;
     5 
     6 public interface ISqlMapper {
     7 
     8     Integer insert(String statement);
     9 
    10     Integer delete(String statement);
    11 
    12     Integer update(String statement);
    13 
    14     List<Map<String, Object>> selectList(String statement);
    15 
    16     String selectOne(String statement);
    17 }

    sqlMapper.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     3 
     4 <mapper namespace="testTraffic.mapper.shelby.ISqlMapper">
     5     <insert id="insert" parameterType="java.lang.String">
     6         ${value}
     7     </insert>
     8 
     9     <select id="selectList" parameterType="java.lang.String" resultType="java.util.HashMap" useCache="false">
    10         ${value}
    11     </select>
    12 
    13     <select id="selectOne" parameterType="java.lang.String" resultType="java.lang.String" useCache="false">
    14         ${value}
    15     </select>
    16 
    17     <delete id="delete" parameterType="java.lang.String">
    18         ${value}
    19     </delete>
    20 
    21     <update id="update" parameterType="java.lang.String">
    22         ${value}
    23     </update>
    24 
    25 </mapper>

    测试代码:

     1 package testTraffic.testDemo;
     2 
     3 import org.apache.ibatis.session.SqlSession;
     4 import org.apache.logging.log4j.LogManager;
     5 import org.apache.logging.log4j.Logger;
     6 import org.junit.Test;
     7 import testTraffic.mapper.shelby.ISqlMapper;
     8 import testTraffic.mapper.shelby.UserMapper;
     9 import testTraffic.utils.MybatisUtils;
    10 
    11 import java.util.List;
    12 
    13 /**
    14  * @Auther:GongXingRui
    15  * @Date:2019/1/24
    16  * @Description:
    17  **/
    18 public class TestMybatisDemo {
    19     private static Logger logger = LogManager.getLogger(TestMybatisDemo.class);
    20 
    21     // 直接执行SQL语句
    22     @Test
    23     public void testMybatisSelectOne() {
    24         String sql = "select user_name from t_admin_user where id = 2";
    25         ISqlMapper sqlMapper = MybatisUtils.getMapper(ISqlMapper.class);
    26         String name = sqlMapper.selectOne(sql);
    27         logger.info(name);
    28     }
    29 
    30     // 多个查询
    31     @Test
    32     public void testMybatisSelectList() {
    33         String sql = "select user_name from t_admin_user";
    34         ISqlMapper sqlMapper = MybatisUtils.getMapper(ISqlMapper.class);
    35         List list = sqlMapper.selectList(sql);
    36         logger.info(list);
    37     }
    38 
    39     // 删除与插入
    40     @Test
    41     public void testMybatisDeleteInsert() {
    42         ISqlMapper sqlMapper = MybatisUtils.getMapper(ISqlMapper.class);
    43 
    44         String deleteSql = "delete from t_admin_user  WHERE user_name = 'testuser';";
    45         String insertSql = "insert into `t_admin_user` (`id`, `user_name`, `user_password`, `del_flag`, `create_time`, `update_time`) VALUES( null,'testuser','testuser123','0','2019-01-21 19:43:58','2019-01-22 19:44:03');";
    46         int n = sqlMapper.delete(deleteSql);
    47         logger.info("删除数据:" + n);
    48         n = sqlMapper.insert(insertSql);
    49         logger.info("插入数据:" + n);
    50 //        MybatisUtils.getSession().commit();
    51     }
    52 
    53 }

    自己封装的Mybatis工具类(MybatisUtils.class)

     1 package testTraffic.utils;
     2 
     3 import org.apache.ibatis.io.Resources;
     4 import org.apache.ibatis.session.SqlSession;
     5 import org.apache.ibatis.session.SqlSessionFactory;
     6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     7 
     8 import java.io.IOException;
     9 import java.io.InputStream;
    10 
    11 /**
    12  * @Description: 生成mybatis的session对象
    13  **/
    14 public class MybatisUtils {
    15     private static String resource = "config/mybatis-config-dao.xml";
    16     private static SqlSessionFactory sqlSessionFactory = null;
    17     private static SqlSession session = null;
    18 
    19 
    20     private static void init() {
    21         try {
    22             InputStream inputStream = Resources.getResourceAsStream(resource);
    23 //            创建工厂
    24             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    25 //            创建session对象
    26             session = sqlSessionFactory.openSession(true);
    27         } catch (IOException e) {
    28             e.printStackTrace();
    29         }
    30     }
    31 
    32     public static SqlSession getSession() {
    33         if (session == null) {
    34             init();
    35         }
    36         return session;
    37     }
    38 
    39     public static void close() {
    40         if (session != null) {
    41             session.close();
    42             session = null;
    43         }
    44     }
    45 
    46     public static <T> T getMapper(Class<T> tClass) {
    47         if (session == null) {
    48             init();
    49         }
    50         return session.getMapper(tClass);
    51     }
    52 
    53     public static void commit() {
    54         if (session != null) {
    55             session.commit();
    56         }
    57     }
    58 
    59 
    60 }


  • 相关阅读:
    神经网络学习笔记
    SQL 快速生成千万数据
    云图说用图片的形式展示APM的功能的重要性
    skywalking实现参数的动态调整功能
    skywalking告警篇详细分析
    skywalking UI大盘制作ppt必看
    skywalking性能分析在线代码级性能剖析,补全分布式追踪的最后一块“短板”
    技术中台报警指标说明
    skywalking告警篇详细分析(二)
    skywalkingUI功能详细说明
  • 原文地址:https://www.cnblogs.com/gongxr/p/10313639.html
Copyright © 2020-2023  润新知