一、新建Maven项目
项目名:mybatis-operate-database
设置Maven版本,配置文件
二、准备数据源
创建一个mybatis_demo数据库
1 # 删除mybatis_demo数据库
2 drop database if exists mybatis_demo;
3
4 # 创建mybatis_demo数据库
5 create database mybatis_demo;
6
7 # 使用mybatis_demo数据库
8 use mybatis_demo;
9
10 # 创建account表Proxy Pattern
11 create table user (
12 id int auto_increment primary key,
13 username varchar(20),
14 age int,
15 score int
16 );
17
18 # 新增数据
19 insert into user (id, username, age, score) values
20 (1,'peter', 18, 100), (2,'pedro', 24, 200),
21 (3,'jerry', 28, 500), (4,'mike', 12, 300),
22 (5,'tom', 27, 1000);
代码结构图:
三、使用MyBatis操作数据库
select单条数(查询)
代码编写:
新建entity包创建实体类:User.java
1 package entity;
2
3 public class User {
4 private Integer id;
5 private String username;
6 private Integer age;
7 private Integer score;
8 // 省略getter&setter方法
9 // 省略toString方法
10 // 右击选择"Gengrate",依次点击getter&setter和toString方法
11 }
新建mapper包创建实体类:UserMapper.java
1 package mapper;
2
3 import entity.User;
4
5 public interface UserMapper {
6 /**
7 * 通过用户id查询用户信息
8 *
9 * @param id
10 * @return
11 */
12 User selectUserById(Integer id);
13 }
在资源文件 " resources " 下新建mapper包,创建配置文件:UserMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="mapper.UserMapper">
4 <select id="selectUserById" resultType="entity.User">
5 SELECT * FROM user WHERE id = #{id}
6 </select>
7 </mapper>
在Text文件夹下新建测试类:UserTest.java
1 import entity.User;
2 import mapper.UserMapper;
3 import org.apache.ibatis.io.Resources;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.sql.SQLException;
11
12 @SuppressWarnings({"Duplicates"})
13 public class UserTest {
14 public static void main(String[] args) throws IOException, SQLException {
15 // 读取配置文件
16 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
17 // 得到 SqlSessionFactory 核心类
18 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
19 // 开始一个 sql 会话
20 SqlSession session = sqlSessionFactory.openSession();
21 // 得到 mapper
22 UserMapper mapper = session.getMapper(UserMapper.class);
23 // 调用通过用户id查询用户信息的方法
24 User user = mapper.selectUserById(1);
25 System.out.println(user);
26 // 关闭会话
27 session.close();
28 }
29 }
执行结果:
select多条数据(查询)
代码编写:
UserMapper.xml
1 <select id="selectUserList" resultType="entity.User">
2 SELECT * FROM user
3 </select>
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="mapper.UserMapper">
4 <select id="selectUserById" resultType="entity.User">
5 SELECT * FROM user WHERE id = #{id}
6 </select>
7 <select id="selectUserList" resultType="entity.User">
8 SELECT * FROM user
9 </select>
10 </mapper>
UserMapper.java
1 /**
2 * 查询所有用户信息
3 *
4 * @return
5 */
6 List<User> selectUserList();
1 package mapper;
2
3 import entity.User;
4
5 import java.util.List;
6
7 public interface UserMapper {
8 /**
9 * 通过用户id查询用户信息
10 *
11 * @param id
12 * @return
13 */
14 User selectUserById(Integer id);
15 /**
16 * 查询所有用户信息
17 *
18 * @return
19 */
20 List<User> selectUserList();
21
22 }
UserTest.java
1 // 调用查询所有用户信息的方法
2 List<User> userList = mapper.selectUserList();
3 userList.forEach(u -> System.out.println(u));
1 import entity.User;
2 import mapper.UserMapper;
3 import org.apache.ibatis.io.Resources;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.sql.SQLException;
11 import java.util.List;
12
13 @SuppressWarnings({"Duplicates"})
14 public class UserTest2 {
15 public static void main(String[] args) throws IOException, SQLException {
16 // 读取配置文件
17 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
18 // 得到 SqlSessionFactory 核心类
19 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
20 // 开始一个 sql 会话
21 SqlSession session = sqlSessionFactory.openSession();
22 // 得到 mapper
23 UserMapper mapper = session.getMapper(UserMapper.class);
24 // 调用通过用户id查询用户信息的方法
25 User user = mapper.selectUserById(1);
26 System.out.println(user);
27 // 调用查询所有用户信息的方法
28
29 List<User> userList = mapper.selectUserList();
30 for(int i=1;i<userList.size();i++){
31 System.out.print(userList.get(i));
32 }
33
34 // 关闭会话
35 session.close();
36 }
37 }
执行结果:
insert数据(新增)
代码编写:
UserMapper.xml
1 <insert id="insertUser" parameterType="entity.User">
2 INSERT INTO user VALUES (#{id},#{username},#{age},#{score})
3 </insert>
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="mapper.UserMapper">
4 <select id="selectUserById" resultType="entity.User">
5 SELECT * FROM user WHERE id = #{id}
6 </select>
7 <select id="selectUserList" resultType="entity.User">
8 SELECT * FROM user
9 </select>
10 <insert id="insertUser" parameterType="entity.User">
11 INSERT INTO user VALUES (#{id},#{username},#{age},#{score})
12 </insert>
13 </mapper>
UserMapper.java
1 /**
2 * 新增用户信息
3 *
4 * @param user
5 * @return
6 */
7 int insertUser(User user);
1 package mapper;
2
3 import entity.User;
4
5 import java.util.List;
6
7 public interface UserMapper {
8 /**
9 * 通过用户id查询用户信息
10 *
11 * @param id
12 * @return
13 */
14 User selectUserById(Integer id);
15
16 /**
17 * 查询所有用户信息
18 *
19 * @return
20 */
21 List<User> selectUserList();
22
23 /**
24 * 新增用户信息
25 *
26 * @param user
27 * @return
28 */
29 int insertUser(User user);
30
31 }
UserTest.java
1 // 调用查询所有用户信息的方法
2 List<User> userListBefore = mapper.selectUserList();
3 userListBefore.forEach(u -> System.out.println(u));
4 // 创建一个要新增的对象并赋值
5 User insertUser = new User();
6 insertUser.setId(6);
7 insertUser.setUsername("anne");
8 insertUser.setAge(18);
9 insertUser.setScore(600);
10 // 调用新增用户信息的方法
11 int count = mapper.insertUser(insertUser);
12 // 调用查询所有用户信息的方法
13 List<User> userListAfter = mapper.selectUserList();
14 userListAfter.forEach(u -> System.out.println(u));
1 import entity.User;
2 import mapper.UserMapper;
3 import org.apache.ibatis.io.Resources;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.sql.SQLException;
11 import java.util.List;
12
13 @SuppressWarnings({"Duplicates"})
14 public class UserTest2 {
15 public static void main(String[] args) throws IOException, SQLException {
16 // 读取配置文件
17 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
18 // 得到 SqlSessionFactory 核心类
19 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
20 // 开始一个 sql 会话
21 SqlSession session = sqlSessionFactory.openSession();
22 // 得到 mapper
23 UserMapper mapper = session.getMapper(UserMapper.class);
24 // 调用通过用户id查询用户信息的方法
25 User user = mapper.selectUserById(1);
26 System.out.println(user);
27 // 调用查询所有用户信息的方法
28
29 List<User> userList = mapper.selectUserList();
30 for(int i=1;i<userList.size();i++){
31 System.out.print(userList.get(i));
32 }
33
34 // 调用查询所有用户信息的方法
35 List<User> userListBefore = mapper.selectUserList();
36 for(int i=1;i<userList.size();i++){
37 System.out.print(userList.get(i));
38 }
39 // 创建一个要新增的对象并赋值
40 User insertUser = new User();
41 insertUser.setId(6);
42 insertUser.setUsername("anne");
43 insertUser.setAge(18);
44 insertUser.setScore(600);
45 // 调用新增用户信息的方法
46 int count = mapper.insertUser(insertUser);
47 // 调用查询所有用户信息的方法
48 List<User> userListAfter = mapper.selectUserList();
49 for(int i=1;i<userList.size();i++){
50 System.out.print(userList.get(i));
51 }
52
53
54 // 关闭会话
55 session.close();
56 }
57 }
执行结果:
提交session:
1 // 提交session
2 session.commit();
执行结果:
update数据(修改)
代码编写:
UserMapper.xml
1 <update id="updateUserById">
2 UPDATE user SET
3 age = #{age},
4 username = #{username},
5 score = #{score}
6 WHERE id = #{id}
7 </update>
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="mapper.UserMapper">
4 <select id="selectUserById" resultType="entity.User">
5 SELECT * FROM user WHERE id = #{id}
6 </select>
7 <select id="selectUserList" resultType="entity.User">
8 SELECT * FROM user
9 </select>
10 <insert id="insertUser" parameterType="entity.User">
11 INSERT INTO user VALUES (#{id},#{username},#{age},#{score})
12 </insert>
13 <update id="updateUserById">
14 UPDATE user SET
15 age = #{age},
16 username = #{username},
17 score = #{score}
18 WHERE id = #{id}
19 </update>
20 </mapper>
UserMapper.java
1 /**
2 * 修改用户信息
3 *
4 * @param user
5 * @return
6 */
7 int updateUserById(User user);
1 package mapper;
2
3 import entity.User;
4
5 import java.util.List;
6
7 public interface UserMapper {
8 /**
9 * 通过用户id查询用户信息
10 *
11 * @param id
12 * @return
13 */
14 User selectUserById(Integer id);
15
16 /**
17 * 查询所有用户信息
18 *
19 * @return
20 */
21 List<User> selectUserList();
22
23 /**
24 * 新增用户信息
25 *
26 * @param user
27 * @return
28 */
29 int insertUser(User user);
30
31 /**
32 * 修改用户信息
33 *
34 * @param user
35 * @return
36 */
37 int updateUserById(User user);
38
39
40 }
UserTest.java
1 // 调用通过用户id查询用户信息的方法
2 User userBefore = mapper.selectUserById(6);
3 System.out.println(userBefore);
4 // 把成绩改为900
5 userBefore.setScore(900);
6 // 调用修改用户信息的方法
7 mapper.updateUserById(userBefore);
8 // 调用通过用户id查询用户信息的方法
9 User userAfter = mapper.selectUserById(6);
10 System.out.println(userAfter);
1 import entity.User;
2 import mapper.UserMapper;
3 import org.apache.ibatis.io.Resources;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.sql.SQLException;
11 import java.util.List;
12
13 @SuppressWarnings({"Duplicates"})
14 public class UserTest {
15 public static void main(String[] args) throws IOException, SQLException {
16 // 读取配置文件
17 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
18 // 得到 SqlSessionFactory 核心类
19 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
20 // 开始一个 sql 会话
21 SqlSession session = sqlSessionFactory.openSession();
22 // 得到 mapper
23 UserMapper mapper = session.getMapper(UserMapper.class);
24 // 调用通过用户id查询用户信息的方法
25 User user = mapper.selectUserById(1);
26 System.out.println(user);
27 // 调用查询所有用户信息的方法
28
29 List<User> userList = mapper.selectUserList();
30 for(int i=1;i<userList.size();i++){
31 System.out.print(userList.get(i));
32 }
33
34 // 调用查询所有用户信息的方法
35 List<User> userListBefore = mapper.selectUserList();
36 for(int i=1;i<userList.size();i++){
37 System.out.print(userList.get(i));
38 }
39 // 创建一个要新增的对象并赋值
40 User insertUser = new User();
41 insertUser.setId(6);
42 insertUser.setUsername("anne");
43 insertUser.setAge(18);
44 insertUser.setScore(600);
45 // 调用新增用户信息的方法
46 int count = mapper.insertUser(insertUser);
47 // 调用查询所有用户信息的方法
48 List<User> userListAfter = mapper.selectUserList();
49 for(int i=1;i<userList.size();i++){
50 System.out.print(userList.get(i));
51 }
52
53 // 调用通过用户id查询用户信息的方法
54 User userBefore = mapper.selectUserById(6);
55 System.out.println(userBefore);
56 // 把成绩改为900
57 userBefore.setScore(900);
58 // 调用修改用户信息的方法
59 mapper.updateUserById(userBefore);
60 // 调用通过用户id查询用户信息的方法
61 User userAfter = mapper.selectUserById(6);
62 System.out.println(userAfter);
63
64 // 关闭会话
65 session.close();
66 }
67 }
执行结果:
delete数据(删除)
代码编写:
UserMapper.xml
1 <delete id="deleteUserById">
2 DELETE FROM user WHERE id = #{id}
3 </delete>
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="mapper.UserMapper">
4 <select id="selectUserById" resultType="entity.User">
5 SELECT * FROM user WHERE id = #{id}
6 </select>
7
8 <select id="selectUserList" resultType="entity.User">
9 SELECT * FROM user
10 </select>
11
12 <!-- <insert id="insertUser" parameterType="entity.User">-->
13 <!-- INSERT INTO user VALUES (#{id},#{username},#{age},#{score})-->
14 <!-- </insert>-->
15
16 <!-- <update id="updateUserById">-->
17 <!-- UPDATE user SET-->
18 <!-- age = #{age},-->
19 <!-- username = #{username},-->
20 <!-- score = #{score}-->
21 <!-- WHERE id = #{id}-->
22 <!-- </update>-->
23 <delete id="deleteUserById">
24 DELETE FROM user WHERE id = #{id}
25 </delete>
26 </mapper>
UserMapper.java
1 /**
2 * 删除用户信息
3 *
4 * @param id
5 * @return
6 */
7 int deleteUserById(Integer id);
1 package mapper;
2
3 import entity.User;
4
5 import java.util.List;
6
7 public interface UserMapper {
8 /**
9 * 通过用户id查询用户信息
10 *
11 * @param id
12 * @return
13 */
14 User selectUserById(Integer id);
15
16 /**
17 * 查询所有用户信息
18 *
19 * @return
20 */
21 List<User> selectUserList();
22
23 /**
24 * 新增用户信息
25 *
26 * @param user
27 * @return
28 */
29 int insertUser(User user);
30
31 // /**
32 // * 修改用户信息
33 // *
34 // * @param user
35 // * @return
36 // */
37 // int updateUserById(User user);
38
39 /**
40 * 删除用户信息
41 *
42 * @param id
43 * @return
44 */
45 int deleteUserById(Integer id);
46
47
48 }
UserTest.java
1 // 调用查询所有用户信息的方法
2 List<User> userListBefore = mapper.selectUserList();
3 userListBefore.forEach(u -> System.out.println(u));
4 // 调用删除用户信息的方法
5 int count = mapper.deleteUserById(6);
6 // 调用查询所有用户信息的方法
7 List<User> userListAfter = mapper.selectUserList();
8 userListAfter.forEach(u -> System.out.println(u));
1 import entity.User;
2 import mapper.UserMapper;
3 import org.apache.ibatis.io.Resources;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.sql.SQLException;
11 import java.util.List;
12
13 @SuppressWarnings({"Duplicates"})
14 public class UserTest {
15 public static void main(String[] args) throws IOException, SQLException {
16 // 读取配置文件
17 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
18 // 得到 SqlSessionFactory 核心类
19 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
20 // 开始一个 sql 会话
21 SqlSession session = sqlSessionFactory.openSession();
22 // 得到 mapper
23 UserMapper mapper = session.getMapper(UserMapper.class);
24 // 调用通过用户id查询用户信息的方法
25 User user = mapper.selectUserById(1);
26 System.out.println(user);
27
28 // 调用查询所有用户信息的方法
29 List<User> userList = mapper.selectUserList();
30 for(int i=1;i<userList.size();i++){
31 System.out.print(userList.get(i));
32 }
33
34 // // 创建一个要新增的对象并赋值
35 // User insertUser = new User();
36 // insertUser.setId(6);
37 // insertUser.setUsername("anne");
38 // insertUser.setAge(18);
39 // insertUser.setScore(600);
40 // // 调用新增用户信息的方法
41 // int count = mapper.insertUser(insertUser);
42 // // 调用查询所有用户信息的方法
43 // List<User> userListAfter = mapper.selectUserList();
44 // for(int i=1;i<userList.size();i++){
45 // System.out.print(userList.get(i));
46 // }
47
48 // // 调用通过用户id查询用户信息的方法
49 // User userBefore = mapper.selectUserById(6);
50 // System.out.println(userBefore);
51 // // 把成绩改为900
52 // userBefore.setScore(900);
53 // // 调用修改用户信息的方法
54 // mapper.updateUserById(userBefore);
55 // // 调用通过用户id查询用户信息的方法
56 // User userAfter = mapper.selectUserById(6);
57 // System.out.println(userAfter);
58
59 // 调用查询所有用户信息的方法
60 List<User> userListBefore = mapper.selectUserList();
61 for(int i=1;i<userList.size();i++){
62 System.out.print(userList.get(i));
63 }
64
65 // 调用删除用户信息的方法
66 int count = mapper.deleteUserById(6);
67 // 调用查询所有用户信息的方法
68 List<User> userListAfter = mapper.selectUserList();
69 for(int i=1;i<userList.size();i++){
70 System.out.print(userList.get(i));
71 }
72
73
74
75 // 提交session
76 session.commit();
77
78
79 // 关闭会话
80 session.close();
81 }
82 }
执行结果:
总结:
select单条(多条)数据查询
insert数据(新增)
update数据(修改)
delete数据(删除)