Mybatis使用入门
CYY

快速入门

1.
导入maven坐标(jar包)

-
msql驱动

1
2
3
4
5
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>

-
mybatis

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>

2.
创建表以及实体类

1
2
3
4
5
6
7
8
9
10
11
USE test;

CREATE TABLE `user`(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(15),
`password` VARCHAR(15)
)

INSERT INTO `user`(`username`,`p`USER`assword`) VALUES('cyy','123456');
INSERT INTO `user` (`username`,`password`) VALUES('hi','123456');
INSERT INTO `user` (`username`,`password`) VALUES('jjb','123456');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class User {
private Integer id;
private String username;
private String password;
public User() {
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}

3.
编写映射文件xxxmapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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="userMapper">
<select id="findAll" resultType="com.study.pojo.User">
select * from user
</select>

<insert id="sava" parameterType="com.study.pojo.User">
insert into user values(#{id},#{username},#{password})
</insert>

<delete id="deleteUser" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>

<update id="updateUser" parameterType="com.study.pojo.User">
update user set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>

4.
编写mybatis核心配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<mappers>
<mapper resource="com/study/mapper/userMapper.xml"></mapper>
</mappers>
</configuration>

5.
进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.study.test;

import com.study.pojo.User;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
* @Auther: cyy
* @Date: 2021/9/17 22 57
* @Description:测试mybatis的增加删改,未进行抽取
*/
public class MybatisTest {
//查
@Test
public void test1() throws IOException {
//加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得sqlSession工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作
List<User> users = sqlSession.selectList("userMapper.findAll");
System.out.println(users);
sqlSession.close();
}

@Test
public void test2() throws IOException {
//删
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = factory.openSession();
sqlSession.delete("userMapper.deleteUser",new Integer(8));
sqlSession.commit();
sqlSession.close();
}

@Test
public void test3() throws IOException {
//增
User user = new User();
user.setUsername("gg4");
user.setPassword("123456");
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = factory.openSession();
sqlSession.insert("userMapper.sava",user);
sqlSession.commit();
sqlSession.close();
}

@Test
public void test4() throws IOException {
//改
User user = new User();
user.setId(10);
user.setUsername("bb4");
user.setPassword("654321");
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = factory.openSession();
sqlSession.update("userMapper.updateUser",user);
sqlSession.commit();
sqlSession.close();
}
}

mybatis传统实现

1.
数据库和pojo同上

2.
dao层

-
接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.study.mapper;

import com.study.pojo.User;

import java.io.IOException;
import java.util.List;

/**
* @Auther: cyy
* @Date: 2021/9/22 22 53
* @Description:
*/
public interface UserMapper {
public List<User> findAll() throws IOException;
public User findOneById(Integer id) throws IOException;
public void saveUser(User user) throws IOException;
public void deleteUser(Integer id) throws IOException;
public void updateUser(User newUser) throws IOException;
}

-
对应实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.study.mapper.impl;

import com.study.mapper.UserMapper;
import com.study.pojo.User;
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;
import java.util.List;

/**
* @Auther: cyy
* @Date: 2021/9/22 23 01
* @Description:
*/
public class UserMapperImpl implements UserMapper {
@Override
public List<User> findAll() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
return sqlSession.selectList("userMapper.findAll");
}

@Override
public User findOneById(Integer id) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
return sqlSession.selectOne("userMapper.findOneById",id);
}

@Override
public void saveUser(User user) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
sqlSession.insert("userMapper.saveUser",user);
sqlSession.commit();
}

@Override
public void deleteUser(Integer id) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
sqlSession.delete("userMapper.deleteUser",id);
sqlSession.commit();
}

@Override
public void updateUser(User newUser) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
sqlSession.update("userMapper.updateUser",newUser);
sqlSession.commit();
}
}

3.
mybatis映射文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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="userMapper">
<select id="findAll" resultType="com.study.pojo.User">
select * from user
</select>

<select id="findOneById" parameterType="int" resultType="com.study.pojo.User">
select * from user where id=#{id};
</select>
<insert id="saveUser" parameterType="com.study.pojo.User">
insert into user values(#{id},#{username},#{password})
</insert>

<delete id="deleteUser" parameterType="int">
delete from user where id = #{ids}
</delete>

<update id="updateUser" parameterType="com.study.pojo.User">
update user set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>

4.
测试dao层

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.study.mapper.impl;

import com.study.mapper.UserMapper;
import com.study.pojo.User;
import org.junit.jupiter.api.Test;

import java.io.IOException;

import static org.junit.jupiter.api.Assertions.*;

class UserMapperImplTest {

UserMapper userMapper = new UserMapperImpl();
@Test
void findAll() throws IOException {
System.out.println(userMapper.findAll());
}

@Test
void findOneById() throws IOException {
System.out.println(userMapper.findOneById(1));
}

@Test
void saveUser() throws IOException {
User user = new User();
user.setUsername("gg23232");
user.setPassword("hha333hd");
userMapper.saveUser(user);
}

@Test
void deleteUser() throws IOException {
userMapper.deleteUser(10);
}

@Test
void updateUser() throws IOException {
User user = new User();
user.setId(9);
user.setUsername("ggg");
user.setPassword("hhasdha");
userMapper.updateUser(user);
}
}

mybatis接口代理方式实现

注意:映射xml文件里的namespace属性值要是接口的全类名,

映射xml文件里的sql语句id属性值要与接口方法对应

1.
数据库和pojo同上

2.
dao层接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.study.mapper;

import com.study.pojo.User;

import java.io.IOException;
import java.util.List;

/**
* @Auther: cyy
* @Date: 2021/9/22 22 53
* @Description:
*/
public interface UserMapper {
public List<User> findAll() throws IOException;
public User findOneById(Integer id) throws IOException;
public void saveUser(User user) throws IOException;
public void deleteUser(Integer id) throws IOException;
public void updateUser(User newUser) throws IOException;
}

3.
mybatis映射文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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.study.mapper.UserMapper">
<select id="findAll" resultType="com.study.pojo.User">
select * from user
</select>

<select id="findOneById" parameterType="int" resultType="com.study.pojo.User">
select * from user where id=#{id};
</select>
<insert id="saveUser" parameterType="com.study.pojo.User">
insert into user values(#{id},#{username},#{password})
</insert>

<delete id="deleteUser" parameterType="int">
delete from user where id = #{ids}
</delete>

<update id="updateUser" parameterType="com.study.pojo.User">
update user set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>

4.
测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.study.mapper;

import com.study.pojo.User;
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 org.junit.jupiter.api.Test;
import org.springframework.core.io.Resource;
import org.w3c.dom.ls.LSOutput;

import java.io.IOException;
import java.io.InputStream;

import static org.junit.jupiter.api.Assertions.*;

class UserMapperTest {

@Test
void findAll() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
System.out.println(mapper.findAll());

}

@Test
void findOneById() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
System.out.println(mapper.findOneById(1));
}

@Test
void saveUser() throws IOException {
User user = new User();
user.setUsername("gg22");
user.setPassword("hha");

InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.saveUser(user);
sqlSession.commit();
}

@Test
void deleteUser() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(12);
sqlSession.commit();
}

@Test
void updateUser() throws IOException {
User user = new User();
user.setId(9);
user.setUsername("gg22");
user.setPassword("hha");

InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(user);
sqlSession.commit();
}
}
 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep