一、新建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 }
执行结果:
2021.3.30
岁岁