mybatis入门配置案例

时间:2022-08-29 05:12:35

一、配置数据库

0.导入jar包
mybatis入门配置案例

  1. 将数据库配置文件放到JDBC.properties中

  2. 在src下创建conf.xml

<?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:
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/mydb
user=root
password=root
-->

<properties resource="JDBC.properties"></properties>
<environments default="development">
<!--environment 表示一个数据库连接 可以配置多个数据库连接 -->
<environment id="development">
<!--transactionManager 事务管理器 两种type类型 一般选择 JDBC -->
<transactionManager type="JDBC" />
<!-- 数据源 -->
<!-- jdbc四大连接参数 -->
<dataSource type="POOLED">
<!-- 驱动名称 -->
<property name="driver" value="${driverClassName}" />
<!-- url请求地址 -->
<property name="url" value="${url}" />
<property name="username" value="${user}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 映射注册 include -->
<!-- resource 全路径 -->
<mapper resource="cn/wang/domain/UserMapper.xml" />
</mappers>
</configuration>

二、配置实例类映射

1.XML方式实现

(1)定义SQL映射XML文件
文件名一般为 XxxMapper.xml
e.g.: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">

<!-- 表与类的映射文件 -->
<!-- namespace 命名空间 唯一 :格式 :当前文件所在包名+映射文件去掉后缀的文件名 (类名) -->
<mapper namespace="cn.wang.domain.UserMapper">
<!-- id标识 语句的唯一性 -->
<!-- resultType 全类名 -->
<select id="findAll" resultType="cn.wang.domain.User">
SELECT * FROM t_user
</select>
<!-- add添加 -->
<!-- parameterType表示参数类型 全类名 -->
<!-- 设置参数 用#{属性名称}表示值的获取 -->
<insert id="add" parameterType="cn.wang.domain.User">
insert into t_user
(username,password,adress) values(#{username},#{password},#{adress})
</insert>
<delete id="deleteById" parameterType="java.io.Serializable">
delete from t_user where
uid=#{uid}
</delete>
<update id="update" parameterType="cn.wang.domain.User">
update t_user set
username=#{username},password=#{password},adress=#{adress} where uid=#{uid}
</update>
<select id="findById" resultType="cn.wang.domain.User"
parameterType="java.io.Serializable">

select * from t_user where uid=#{uid}
</select>
</mapper>

(2)在配置文件conf.xml中注册映射接口

<mappers>
<!-- 映射注册 include -->
<!-- resource 全路径 -->
<mapper resource="cn/wang/domain/UserMapper.xml" />
</mappers>

2.注解方式实现

在方法上添加注解

package cn.wang.dao;

import java.io.Serializable;
import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import cn.wang.domain.User;

public interface UserDao {
@Select("SELECT * FROM t_user")
List<User> findAll();


@Insert("insert into t_user(username,password,adress) values(#{username},#{password},#{adress})")
void add(User user);


@Delete("delete from t_user where uid=#{uid}")
void deleteById(Serializable id);


@Update("update t_user set username=#{username},password=#{password},adress=#{adress} where uid=#{uid}")
void update(User user);


@Select("select * from t_user where uid=#{uid}")
User findById(Serializable id);

}

三、编写utils类

package cn.wang.utils;

import java.io.InputStream;

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

public class MyBatisUtils {
private static SqlSessionFactory sessionFactory=null;
static{
//读取配置文件
InputStream in=MyBatisUtils.class.getResourceAsStream("/conf.xml");
//获取sessionFactory
sessionFactory=new SqlSessionFactoryBuilder().build(in);
}
public static SqlSession getSession(){
//获取session
return sessionFactory.openSession();
}
}

四、mybatis实现crud

package cn.wang.dao;

import java.io.Serializable;
import java.util.List;

import org.apache.ibatis.session.SqlSession;

import cn.wang.domain.User;
import cn.wang.utils.MyBatisUtils;

public class UserDaoImpl implements UserDao {

@Override
public List<User> findAll() {
// 获取session
SqlSession session = MyBatisUtils.getSession();
// 获取mapper
UserDao mapper = session.getMapper(UserDao.class);
// 查询所有用户
List<User> list = mapper.findAll();
// 关闭资源
session.close();
// 返回结果
return list;
}

@Override
public void add(User user) {
// 获取session
SqlSession session = MyBatisUtils.getSession();
// 获取mapper
UserDao mapper = session.getMapper(UserDao.class);
// 添加用户
mapper.add(user);
// 提交事务
session.commit();
// 关闭资源
session.close();
}

@Override
public void deleteById(Serializable id) {
// 获取session
SqlSession session = MyBatisUtils.getSession();
// 获取mapper
UserDao mapper = session.getMapper(UserDao.class);
// 删除用户
mapper.deleteById(id);
// 提交事务
session.commit();
// 关闭资源
session.close();
}

@Override
public void update(User user) {
// 获取session
SqlSession session = MyBatisUtils.getSession();
// 获取mapper
UserDao mapper = session.getMapper(UserDao.class);
// 修改用户
mapper.update(user);
// 提交事务
session.commit();
// 关闭资源
session.close();
}

@Override
public User findById(Serializable id) {
// 获取session
SqlSession session = MyBatisUtils.getSession();
// 获取mapper
UserDao mapper = session.getMapper(UserDao.class);
// 根据ID查询
User user=mapper.findById(id);
// 关闭资源
session.close();
return user;
}
}