新建Maven项目:
整体目录结构:
需要的驱动:
Mybatis驱动
Mysql数据库驱动
单元测试的junit驱动
lombok驱动
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>untitled3</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope> </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
首先写下实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private String password;
private int age;
private String address;
}
lombok驱动
常用的注解
- @Data :相当于get和set方法
- @Setter : 相当于set方法
- @Getter: 相当于get方法
- @AllArgsConstructor 相当于有参构造
- @NoArgsConstructor 相当于无参构造
然后写接口Usermapper
public interface UserMapper {
public int addUser(User user);
public int deleteUser(int id);
public int updateUser(User user);
public List<User> showUser();
}
写接口与实体类的映射文件
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="qf.mapper.UserMapper">
<insert id="addUser" parameterType="qf.pojo.User">//分别对应接口方法,对应的实体类
insert into user(name ,password,age,address)values (#{name},#{password},#{age},#{address})
</insert>
<delete id="deleteUser">
delete from user where id = #{id}
</delete>
<update id="updateUser" parameterType="qf.pojo.User">
update user set name=#{name},age=#{age},address=#{address} where id=#{id}
</update>
<select id="showUser" resultType="qf.pojo.User">
select * from user
</select>
</mapper>
然后是全局配置文件
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="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/UserMapper.xml"/>//将映射文件注入配置文件中,莫忘。
</mappers>
</configuration>
最后写一个测试类TestUser
public class TestUser {
@Test
public void add() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setName("sxm");
user.setPassword("123");
user.setAge(22);
user.setAddress("ys");
int i = mapper.addUser(user);
if (i > 0) {
sqlSession.commit();
System.out.println("增加成功");
} else {
System.out.println("增加失败");
}
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void delete() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.deleteUser(3);
if (i > 0) {
sqlSession.commit();
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void update() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(1);
user.setName("sxm");
user.setPassword("123");
user.setAge(22);
user.setAddress("ys");
int i = mapper.updateUser(user);
if (i > 0) {
sqlSession.commit();
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void showUser() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.showUser();
for (User user:users){
System.out.println(user.getName()+"\t"+user.getAddress());
}
}catch (IOException e){
e.printStackTrace();
}
}
}
完成Mybatis框架的增删查改。
注:
Maven官网
https://mvnrepository.com/
Mbatis官网
https://mybatis.org/mybatis-3/zh/configuration.html
照例一句歌词