- 创建一个空的Maven项目
- 建表users,
create table users(
uid int primary key auto_increment,
uname varchar(20) not null,
uage int not null)
insert into users(uid,uname,uage) values(null,'张三',20),(null,'李四',18) - 引入Mybatis依赖
<dependencies>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--注意mysql版本,8.0以下可用5.1.29;8.0需使用8.0.19-->
<!--<version>5.1.29</version>-->
<version>8.0.19</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>- 创建数据库和相应的表后,在resources文件夹中创建(mybatis-config.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>
<!-- 环境配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据库连接相关配置 ,这里动态获取config.properties文件中的内容-->
<dataSource type="POOLED">
<!--注意mysql版本,8.0以下可用com.mysql.jdbc.Driver;8.0需使用com.mysql.cj.jdbc.Driver-->
<!--<property name="driver" value="com.mysql.jdbc.Driver" />-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.56.102:3306/jc_test" />
<property name="username" value="root" />
<property name="password" value="Perfect1@34" />
</dataSource>
</environment>
</environments>
<!-- mapping文件路径配置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
- 创建数据库和相应的表后,在resources文件夹中创建(mybatis-config.xml)核心文件
- 在java创建包com.jc.mybatis.model创建实体类User.java(注意:要与表字段一致)
package com.jc.mybatis.model;
import java.io.Serializable;
public class User implements Serializable {
private int uid;
private String uname;
private int uage;
public User() {
}
public User(int id, String name, int age) {
this.uid = id;
this.uname = name;
this.uage = age;
}
public int getId() {
return uid;
}
public void setId(int id) {
this.uid = id;
}
public String getName() {
return uname;
}
public void setName(String name) {
this.uname = name;
}
public int getAge() {
return uage;
}
public void setAge(int age) {
this.uage = age;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", uname='" + uname + '\'' +
", uage='" + uage + '\'' +
'}';
}
}- 创建mapper接口,在java创建包com.jc.mybatis.dao创建类UserDao.java
package com.jc.mybatis.dao;
import com.jc.mybatis.model.User;
import java.util.List;
import java.util.Map;
public interface UserDao {
List getAllUsers();
int updateUser(User user);
int addUser(User user);
int deleteUser(int id);
User getOneUser(Map map);
List getUsersByNameLike(String name);
}
- 创建mapper接口,在java创建包com.jc.mybatis.dao创建类UserDao.java
- 在resources创建一个mpaaer文件夹,存放需要映射的xml文件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指定Dao接口的完整类名,mybatis会依据这个接口动态创建一个实现类去实现这个接口,而这个实现类是一个Mapper对象-->
<mapper namespace="com.jc.mybatis.dao.UserDao">
<!--标签名是操作方式,id ="接口中的方法名" parameterType="传入的参数类型" resultType = "返回实体类对象,使用包.类名"-->
<insert id="addUser" parameterType="com.jc.mybatis.model.User">
insert into users (uid,uname,uage) values (#{id},#{name},#{age})
</insert>
<delete id="deleteUser" parameterType="int">
delete from users where uid=#{id}
</delete>
<update id="updateUser" parameterType="com.jc.mybatis.model.User">
<!--用#{}传入参数,实体类的属性可以直接用属性名调用,方法参数可以直接用参数名-->
update users set uname=#{name},uage=#{age} where uid=#{id}
</update>
<select id="getAllUsers" resultType="com.jc.mybatis.model.User">
<!--标签内写sql语句-->
select * from users
</select>
<select id="getOneUser" parameterType="map" resultType="com.jc.mybatis.model.User">
select * from users where uid=#{id}
</select>
<select id="getUsersByNameLike" parameterType="String" resultType="com.jc.mybatis.model.User">
select * from users where uname like #{name}
</select>
</mapper> - 创建完UserMapper.xml文件后需要配置到mybatis-config.xml文件中
- 创建MybatisUtils工具类
package com.jc.mybatis.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
//SqlSessionFactory 对象最好是全局的单例变量
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//每个请求初始化一个SqlSession,调用这个方法
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
//得到支持自动提交的SqlSession对象
public static SqlSession getAutoCommitSqlSession(){
return sqlSessionFactory.openSession(true);
}
} - 以上创建完,结构如下
- 编写单元测试类(在类文件UserDao上,Ctrl + Shift + T 创建测试类),验证方法是否成功,否则根据错误提示进行修改
package com.jc.mybatis;
import com.jc.mybatis.dao.UserDao;
import com.jc.mybatis.model.User;
import com.jc.mybatis.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Mybatis 增删改查Junit
*/
public class UserDaoTest {
@Test
public void testAddUser() {
final SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
userDao.addUser(new User(3, "li", 30));
sqlSession.commit();
sqlSession.close();
}
@Test
public void testDelUser(){
final SqlSession sqlSession = MybatisUtils.getSqlSession();
final UserDao userDao = sqlSession.getMapper(UserDao.class);
userDao.deleteUser(1);
//增删改需要提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void testUpdateUser() {
final SqlSession sqlSession = MybatisUtils.getSqlSession();
final UserDao userDao = sqlSession.getMapper(UserDao.class);
userDao.updateUser(new User(2, "lisi", 25));
//增删改需要提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void testGetAllUser() {
final SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
List users = userDao.getAllUsers();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void testGetOneUser(){
final SqlSession sqlSession = MybatisUtils.getSqlSession();
final UserDao userDao = sqlSession.getMapper(UserDao.class);
Map map = new HashMap<>();
map.put("id", 2);
System.out.println(userDao.getOneUser(map));
sqlSession.close();
}
@Test
public void testGetUsersByNameLike(){
final SqlSession sqlSession = MybatisUtils.getSqlSession();
final UserDao userDao = sqlSession.getMapper(UserDao.class);
List users = userDao.getUsersByNameLike("%1%");
for (User user : users)
System.out.println(user);
sqlSession.close();
}
}
【Java】IntelliJ IDEA 2021创建Mybatis项目
最新推荐文章于 2024-02-20 21:06:19 发布