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);
	}

}

猜你喜欢

转载自blog.csdn.net/ayunnuo/article/details/110003209