步骤:
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);
}
}