Mybatis基本环境搭建及CRUD基本方法使用

2022-07-31,,,,

Mybatis基本环境搭建CRUD基本方法

  • 一、创建maven工程并导入坐标
  • 二、创建实体类
  • 三、编写dao的接口
  • 四、创建Mybatis的主配置文件
  • 五、创建用户的映射配置文件
  • 六、测试方法
  • 七、注意事项
    • 1.Mybatis映射配置文件
    • 2.用户的映射配置文件
    • 3.测试方法中读取配置文件
  • 八、附录

一、创建maven工程并导入坐标

附:IDEA创建maven工程具体步骤——网址

<dependencies> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.13</version> </dependency> <!----单元测试> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <!--maven插件--> <plugins> <!--jdk编译插件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>utf-8</encoding> </configuration> </plugin> </plugins> </build> 

二、创建实体类

import java.io.Serializable; import java.util.Date; /**
 * 实现序列化接口
 */ public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; 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 getAddress() {return address;} public void setAddress(String address) {this.address = address;} public String getSex() {return sex;} public void setSex(String sex) {this.sex = sex;} public Date getBirthday() {return birthday;} public void setBirthday(Date birthday) {this.birthday = birthday;} @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", address='" + address + '\'' + ", sex='" + sex + '\'' + ", birthday=" + birthday + '}'; } } 

三、编写dao的接口

具体方法

  1. 查询所有用户信息方法
  2. 保存一个用户方法
  3. 保存一个用户,并获取用户id方法
  4. 根据用户id更新方法
  5. 根据用户id删除方法
  6. 查询一个用户方法
  7. 根据名称模糊查询用户信息方法
  8. 查询总用户数方法
package com.hzxy.dao; import com.hzxy.domain.User; import java.util.List; /**
 * 用户的持久层接口
 */ public interface UserDao { /**
     * 查询所有用户
     * @return
     */ List<User> findAll(); /**
     * 保存用户
     * @param user
     */ void saveUser1(User user); /**
     * 保存用户,并获取用户id
     * @param user
     */ void saveUser2(User user); /**
     * 根据id更新用户
     * @param user
     */ void updateUser(User user); /**
     * 根据id删除用户
     * @param userid
     */ void deleteUser(Integer userid); /**
     * 根据id查询用户信息
     * @param userId
     * @return
     */ User findById(Integer userId); /**
     * 根据名称模糊查询用户信息
     * @param username
     * @return
     */ List<User> findByName(String username); /**
     * 查询总用户数
     * @return
     */ int findTotal(); } 

四、创建Mybatis的主配置文件

<?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"> <!--默认环境--> <!-- 配置mysql的环境--> <environment id="mysql"> <!-- 配置事务的类型 --> <transactionManager type="JDBC"></transactionManager> <!-- 配置连接池(数据源) --> <dataSource type="POOLED"> <!-- 配置连接数据库的4个基本信息 --> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybastis?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 --> <mappers> <mapper resource="com/hzxy/dao/UserDao.xml"/> </mappers> </configuration> 

五、创建用户的映射配置文件

<?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.hzxy.dao.UserDao"> <!-- 注明哪个dao接口--> <!-- 查询所有 --> <select id="findAll" resultType="com.hzxy.domain.User"> <!--方法名称和封装好存放的位置--> SELECT * FROM USER ; </select> <!-- 保存用户 --> <insert id="saveUser1" parameterType="com.hzxy.domain.User"> <!-- 告知参数类型 --> <!-- 用户id是自增长的,所以不用填写参数 --> INSERT INTO USER (username,birthday,sex,address)VALUES(#{username},#{birthday},#{sex},#{address}); </insert> <!-- 保存用户 --> <insert id="saveUser2" parameterType="com.hzxy.domain.User"> <!-- 告知参数类型 --> <!-- 配置插入操作后,获取插入数据的id; keyColumn库的值--> <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER"> SELECT last_insert_id(); </selectKey> INSERT INTO USER (username,birthday,sex,address)VALUES(#{username},#{birthday},#{sex},#{address}); </insert> <!-- 更新用户 --> <update id="updateUser" parameterType="com.hzxy.domain.User"> <!-- 告知参数类型 --> UPDATE USER SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id=#{id}; </update> <!-- 删除用户 --> <delete id="deleteUser" parameterType="java.lang.Integer"> <!-- 告知参数类型 --> DELETE FROM USER WHERE id = #{uid}; <!-- uid只是一个占位符,可以随便写--> </delete> <!-- 根据id查询用户信息 --> <select id="findById" parameterType="Int" resultType="com.hzxy.domain.User"> SELECT * FROM USER WHERE id = #{uid}; </select> <!-- 根据名称模糊查询用户信息 --> <select id="findByName" parameterType="string" resultType="com.hzxy.domain.User"> SELECT * FROM USER WHERE username LIKE #{name}; </select> <!-- 查询总用户数 --> <select id="findTotal" resultType="int"> SELECT COUNT(id) FROM USER ; </select> </mapper> 

六、测试方法

方法调用步骤

  1. 使用类加载器读取类路径的配置文件,生成字节输入流
  2. 创建SqlSessionFactory工厂,mybatis使用构建者模式
  3. 使用工厂生产SqlSession对象
  4. 使用SqlSession创建Dao接口的代理对象
  5. 执行测试方法
  6. 提交事务
  7. 释放资源
package com.hzxy.text; import com.hzxy.dao.UserDao; import com.hzxy.domain.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.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.List; /**
 * 测试mybatis的crud操作
 */ public class MybatisTest { private InputStream in ; private SqlSession sqlSession ; private UserDao userDao ; @Before //用于在测试方法执行前执行 public void init() throws IOException { //使用类加载器读取类路径的配置文件,生成字节输入流 in = Resources.getResourceAsStream("SqlMapConfig.xml"); //创建SqlSessionFactory工厂,mybatis使用构建者模式 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); //使用工厂生产SqlSession对象 sqlSession = factory.openSession(); //使用SqlSession创建Dao接口的代理对象 userDao = sqlSession.getMapper(UserDao.class); } @After //用于在测试方法执行之后执行 public void destroy() throws IOException { //提交事务 sqlSession.commit(); //释放资源 sqlSession.close(); in.close(); } /**
     * 测试查询所有
     */ @Test public void testFindAll(){ //使用代理对象执行查询所有方法 List<User> users = userDao.findAll(); for (User user : users){ System.out.println(user); } } /**
     * 测试保存1操作
     */ @Test public void testSave(){ User user = new User(); user.setUsername("mybatis"); user.setAddress("广东"); user.setSex("男"); user.setBirthday(new Date()); //使用代理对象执行保存方法 userDao.saveUser1(user); } /**
     * 测试保存2操作
     */ @Test public void testSave2(){ User user = new User(); user.setUsername("mybatis"); user.setAddress("广东"); user.setSex("男"); user.setBirthday(new Date()); //使用代理对象执行保存方法 userDao.saveUser2(user); System.out.println(user); } /**
     * 测试更新操作
     */ @Test public void testUpdate(){ //使用刚添加的用户 User user = new User(); user.setId(49); user.setUsername("mybatis"); user.setAddress("北京"); user.setSex("女"); user.setBirthday(new Date()); //使用代理对象执行更新方法 userDao.updateUser(user); } /**
     * 测试删除操作
     */ @Test public void testDelete(){ //使用代理对象执行删除方法 userDao.deleteUser(49); } /**
     * 测试查询一个操作
     */ @Test public void testFindOne(){ //使用代理对象执行删除方法 User user = userDao.findById(50); System.out.println(user); } /**
     * 测试模糊查询操作
     */ @Test public void testFindByName(){ //使用代理对象执行删除方法 List<User> users = userDao.findByName("%王%"); for(User user : users){ System.out.println(user); } } /**
     * 测试查询总用户数操作
     */ @Test public void testFindTotal(){ //使用代理对象执行删除方法 int count = userDao.findTotal(); System.out.println(count); } } 

七、注意事项

1.Mybatis映射配置文件

1.1 mybatis的主映射配置文件位置必须和dao接口的包结构相同

2.用户的映射配置文件

2.1 用户的映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
2.2 用户的映射配置文件的操作配置,id属性的取值必须是dao接口的方法名
2.3 用户的映射配置文件的操作配置,resultType 属性: 用于指定结果集的类型
2.4 用户的映射配置文件的操作配置,parameterType 属性: 用于指定传入参数的类型
2.5 用户的映射配置文件的操作,sql 语句中使用#{}字符:它代表占位符,相当于原来 jdbc 部分所学的"?"
2.6 用户的映射配置文件的操作,#{}中内容的写法: 由于数据类型是基本类型,所以此处可以随意写

3.测试方法中读取配置文件

3.1 测试方法中读取配置文件,使用类加载器读取类路径的配置文件,生成字节输入流,不使用绝对路径和相对路径

八、附录

  1. IDEA创建maven工程具体步骤——网址
  2. Mybatis——网址

本文地址:https://blog.csdn.net/sygg12345666/article/details/107864982

《Mybatis基本环境搭建及CRUD基本方法使用.doc》

下载本文的Word格式文档,以方便收藏与打印。