当前位置: 首页 > news >正文

mybatis的常用语句操作demo

步骤:

1. 导包

在这里插入图片描述

mybatis配置文件工具类(MybatisConfig)

package com.yunnuo.util;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisConfig {


	//加载mybatis.xml

	//根据sqlSessionFactoryBuilder建造sqlsessionFactory

	static SqlSessionFactory sqlSessionFactory ;

	static{
		Reader reader=null ;
		try {
			reader = Resources.getResourceAsReader("mybatis.xml");
		} catch (IOException e) {
			e.printStackTrace();
		}
		//根据sqlSessionFactoryBuilder建造sqlsessionFactory
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder() ;
		//构造sqlSessionFactory
		sqlSessionFactory = sqlSessionFactoryBuilder.build(reader) ;
	}

	/**
	 * 返回sqlsession
	 * @return
	 */
	public static SqlSession getSqlSession(){
		//默认为false 不自动开启事务
		return  sqlSessionFactory.openSession(true) ;
	}

}

2. 添加约束

<?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>
	<!-- 引入外部jdbc配置文件 -->
	<properties resource="jdbc.properties"></properties>
	<!-- 开发环境 -->
	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
		<!-- 生产环境 -->
		<environment id="prod">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<!-- 引用mapper.xml文件 -->
	<mappers>
		<mapper resource="com/yunnuo/mapper/UserMapper.xml"/>
	</mappers>

</configuration>


3. jdbc配置文件(jdbc.properties)

注:本博主这里用的是mysql8

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatisdb?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

4. 创建实体类User

package com.yunnuo.entity;

public class T_User {
	
	private Integer uid ;
	private String uname ;
	private String password ;
	
	
	public Integer getUid() {
		return uid;
	}
	public String getUname() {
		return uname;
	}
	public String getPassword() {
		return password;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	@Override
	public String toString() {
		return "T_User [uid=" + uid + ", uname=" + uname + ", password=" + password + "]";
	}
	
	
	
}

5. 创建UserDao类

package com.yunnuo.dao;

import com.yunnuo.entity.T_User;

import java.util.List;
import java.util.Map;

public interface UserDao {
	/**
	 * 查询全部
	 * @return
	 */
	List<T_User> findAll();
	/**
	 * 根据id查询
	 * @param uid
	 * @return
	 */
	T_User selectById(Integer uid) ;

	/**
	 * 根据name查询
	 * @param uname
	 * @return
	 */
	T_User selectByName(String uname) ;

	/**
	 * 根据map集合进行查询
	 * @param map
	 * @return
	 */
	T_User selectByMap(Map<String,Object> map);

	/**
	 * 根据user对象进行查询
	 * @param user
	 * @return
	 */
	T_User selectByUser(T_User user);

	/**
	 * 添加用户
	 * @param user
	 * @return
	 */
	int addUser(T_User user);

	/**
	 * 删除用户
	 * @param uid
	 * @return
	 */
	int delUser(int uid);

	/**
	 * 添加用户
	 * @param user
	 * @return
	 */
	int updateUser(T_User user);

	/**
	 * 大批量插入操作
	 * @param userList
	 * @return
	 */
	int intsertBatch(List<T_User> userList);
    
	
}

6.创建UserDaoImpl具体实现类

package com.yunnuo.dao.impl;

import org.apache.ibatis.session.SqlSession;

import com.yunnuo.util.MybatisConfig;
import com.yunnuo.dao.UserDao;
import com.yunnuo.entity.T_User;

import java.util.List;
import java.util.Map;

public class UserDaoImpl implements UserDao {
    SqlSession sqlSession = MybatisConfig.getSqlSession();

    @Override
    public List<T_User> findAll() {
        List<T_User> users = sqlSession.selectList("com.yunnuo.dao.UserDao.findAll");
        return users;
    }

    @Override
    public T_User selectById(Integer uid) {

        Object obj = sqlSession.selectOne("com.yunnuo.dao.UserDao.selectById", uid);
        if (obj != null) {
            return (T_User) obj;
        }
        return null;
    }

    @Override
    public T_User selectByName(String uname) {
        // TODO Auto-generated method stub
        Object o = sqlSession.selectOne("com.yunnuo.dao.UserDao.selectByName", uname);
        if (o != null) {
            return (T_User) o;
        }
        System.out.println(uname);
        System.out.println(o);
        return null;

    }

    @Override
    public T_User selectByMap(Map<String, Object> map) {
        // TODO Auto-generated method stub
        Object o = sqlSession.selectOne("com.yunnuo.dao.UserDao.selectByMap", map);
        if (o != null) {
            return (T_User) o;
        }
        System.out.println(map);
        System.out.println(o);
        return null;

    }

    @Override
    public T_User selectByUser(T_User user) {
        Object o = sqlSession.selectOne("com.yunnuo.dao.UserDao.selectByUser", user);
        if (o != null) {
            return (T_User) o;
        }
        System.out.println(user);
        System.out.println(o);
        return null;
    }

    @Override
    public int addUser(T_User user) {
        //添加
        int insert = sqlSession.insert("com.yunnuo.dao.UserDao.addUser", user);
        return insert;
    }

    @Override
    public int delUser(int uid) {
        return sqlSession.delete("com.yunnuo.dao.UserDao.delUser",uid);
    }

    @Override
    public int updateUser(T_User user) {
        return sqlSession.update("com.yunnuo.dao.UserDao.updateUser",user);
    }

    @Override
    public int intsertBatch(List<T_User> userList) {

      return   sqlSession.insert("com.yunnuo.dao.UserDao.intsertBatch",userList);
    }

}

7.创建user的mapper映射(UserMapper.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 namespace="com.yunnuo.dao.UserDao">
    <insert id="addUser" parameterType="com.yunnuo.entity.T_User">
		insert into t_user (uname,password) values (#{uname},#{password})
	</insert>
    <insert id="intsertBatch" parameterType="java.util.List">
        insert into t_user (uname,password) values
        <foreach collection="list" item="user" index="index" separator=",">
            (#{user.uname},#{user.password})
        </foreach>
    </insert>
    <!--	<update id="updateUser" parameterType="com.yunnuontity.T_User">
            update t_user set uname=#{uname},password=#{password} where uid=#{uid}
        </update>-->
    <update id="updateUser" parameterType="com.yunnuo.entity.T_User">
        -- 采用字符拼接
        update t_user
        <trim prefix="set" suffixOverrides=",">
            <if test="uname != null">
                uname=#{uname},
            </if>
            <if test="password != null">
                password=#{password},
            </if>
        </trim>
        where uid=#{uid}
    </update>
    <delete id="delUser" parameterType="java.lang.Integer">
		delete from t_user where uid=#{uid}
	</delete>

    <select id="selectById" parameterType="java.lang.Integer" resultType="com.yunnuo.entity.T_User">
		select * from t_user where uid=#{uid}
	</select>


    <select id="selectByName" parameterType="java.lang.String" resultType="com.yunnuo.entity.T_User">
		select * from t_user where uname=#{uname}
	</select>
    <select id="selectByMap" resultType="com.yunnuo.entity.T_User" parameterType="java.util.Map">
		select * from t_user where uname=#{uname} and password=#{password}
	</select>
    <select id="selectByUser" resultType="com.yunnuo.entity.T_User" parameterType="com.yunnuo.entity.T_User">
		select * from t_user where uname=#{uname}
	</select>
    <select id="findAll" resultType="com.yunnuo.entity.T_User">
		select * from t_user
	</select>

</mapper>

测试类(MybatisMainTest)

这里博主做的很简单的单元测试类

package com.yunnuo.test;


import com.yunnuo.dao.UserDao;
import com.yunnuo.dao.impl.UserDaoImpl;
import com.yunnuo.entity.T_User;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class MybatisMainTest {
    UserDao dao = new UserDaoImpl();

    /**
     * 根据id查询
     */
    @Test
    public void test1() {
        T_User user = dao.selectById(1001);
        System.out.println(user);
    }

    /**
     * 根据name查询
     */
    @Test
    public void test2() {

        T_User user = dao.selectByName("韩信");
        System.out.println(user);
    }

    /**
     * 根据map集合查询
     */
    @Test
    public void test3() {
        Map<String, Object> map = new HashMap<>();
        map.put("uname", "李白");
        map.put("password", "123");
        T_User user = dao.selectByMap(map);
        System.out.println(user);
    }

    /**
     * 根据对象查询
     */
    @Test
    public void test4() {
        T_User t_user = new T_User();
        t_user.setUname("娜可露露");
        T_User user = dao.selectByUser(t_user);
        System.out.println(user);
    }

    /**
     * 查询全部
     */
    @Test
    public void test5() {
        List<T_User> users = dao.findAll();
        System.out.println(users);
    }

    /**
     * 添加
     */
    @Test
    public void Test6() {
        T_User t_user = new T_User();
        t_user.setUname("关羽");
        t_user.setPassword("1234");
        int result = dao.addUser(t_user);
        System.out.println(result);
    }

    /**
     * 删除
     */
    @Test
    public void Test7() {
        int del = dao.delUser(1001);
        System.out.println(del);

    }

    /**
     * 更新
     */
    @Test
    public void Test8() {
        T_User t_user = new T_User();
        t_user.setUid(1002);
        t_user.setUname("中胡");
//		t_user.setPassword("12345");
        int update = dao.updateUser(t_user);
        System.out.println(update);
    }

	/**
	 * 批量插入
	 */
    @Test
    public void Test9() {
		List<T_User> t_users = new ArrayList<>();
		long start = System.currentTimeMillis();
		for (int i=1;i<200000;i++){
			T_User t_user = new T_User();
			t_user.setUname("插入用户"+i);
			t_user.setPassword("root"+i);
			t_users.add(t_user);
		}
		long end = System.currentTimeMillis();
		int intsertBatch = dao.intsertBatch(t_users);
        System.out.println("用时:"+(end-start));

		System.out.println(intsertBatch);
	}

}

相关文章:

  • Java常用设计模式 工厂模式和观察者模式
  • SQL中的DQL、DML、DDL、DCL
  • ssm框架:Error creating bean with name ‘mvcContentNegotiationManager‘:
  • Java的9种基本数据类型以及封装类
  • 什么是SVN
  • Svn与git的区别 Svn与FTP的最大区别
  • SVN内容冲突
  • MySQL命令安装
  • IDEA自己常用的快捷键
  • IDEA git常用快捷键
  • IDEA常用快捷键汇总
  • MySQL开启用户远程登录权限
  • OCRACLE创建用户并授权
  • radis的yml常用配置
  • mysql关于时区报错问题The server time zone value ‘�й���׼ʱ��‘ is unrecognized
  • [nginx文档翻译系列] 控制nginx
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • C语言笔记(第一章:C语言编程)
  • Git学习与使用心得(1)—— 初始化
  • javascript 总结(常用工具类的封装)
  • maya建模与骨骼动画快速实现人工鱼
  • Python_网络编程
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • spring boot 整合mybatis 无法输出sql的问题
  • sublime配置文件
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 工作手记之html2canvas使用概述
  • 关于Java中分层中遇到的一些问题
  • 规范化安全开发 KOA 手脚架
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 我的面试准备过程--容器(更新中)
  • 原生 js 实现移动端 Touch 滑动反弹
  • 原生Ajax
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Python 之网络式编程
  • # include “ “ 和 # include < >两者的区别
  • #QT(一种朴素的计算器实现方法)
  • (003)SlickEdit Unity的补全
  • (06)金属布线——为半导体注入生命的连接
  • (2020)Java后端开发----(面试题和笔试题)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (阿里云万网)-域名注册购买实名流程
  • (超详细)语音信号处理之特征提取
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET 分布式技术比较
  • .NET 回调、接口回调、 委托
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET运行机制
  • .Net中wcf服务生成及调用
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • /var/log/cvslog 太大
  • [ Algorithm ] N次方算法 N Square 动态规划解决