• 第一个MyBatis程序


    思路:

            搭建环境-->导入Mybatis-->编写代码-->测试

     

    第一步:搭建环境

    (1)搭建数据库

    1. CREATE DATABASE `mybatis`;
    2. USE `mybatis`;
    3. CREATE TABLE `user`(
    4. `id` INT(20) NOT NULL PRIMARY KEY,
    5. `name` VARCHAR(30) DEFAULT NULL,
    6. `pwd` VARCHAR(30) DEFAULT NULL
    7. ) ENGINE=INNODB DEFAULT CHARSET=utf8;
    8. INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
    9. (1,'zyy','123456'),
    10. (2,'张三','123456'),
    11. (3,'李四','123456');

    (2)新建项目

    1、新建一个普通的maven项目

    2、删除src目录(作为父工程) 

    3、 导入maven依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>mysqlgroupId>
    4. <artifactId>mysql-connector-javaartifactId>
    5. <version>5.1.47version>
    6. dependency>
    7. <dependency>
    8. <groupId>org.mybatisgroupId>
    9. <artifactId>mybatisartifactId>
    10. <version>3.5.7version>
    11. dependency>
    12. <dependency>
    13. <groupId>junitgroupId>
    14. <artifactId>junitartifactId>
    15. <version>4.12version>
    16. dependency>
    17. dependencies>

     

    第二步:创建一个模板

    (1)编写mybatis的核心配置文件

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <environments default="development">
    6. <environment id="development">
    7. <transactionManager type="JDBC"/>
    8. <dataSource type="POOLED">
    9. <property name="driver" value="com.mysql.jdbc.Driver"/>
    10. <property name="url"
    11. value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
    12. <property name="username" value="root"/>
    13. <property name="password" value="123456"/>
    14. dataSource>
    15. environment>
    16. environments>
    17. <mappers>
    18. <mapper resource="com/zyy/dao/UserMapper.xml"/>
    19. mappers>
    20. configuration>

    (2)编写mybatis工具类

    1. package com.gt.utils;
    2. import org.apache.ibatis.io.Resources;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.apache.ibatis.session.SqlSessionFactory;
    5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    6. import java.io.IOException;
    7. import java.io.InputStream;
    8. //SqlSessionFactory --> sqlSession
    9. public class MybatisUtils {
    10. private static SqlSessionFactory sqlSessionFactory;
    11. static {
    12. try {
    13. //使用Mybatis第一步:获取sqlSessionFactory对象
    14. String resource = "mybatis-config.xml";
    15. InputStream InputStream = Resources.getResourceAsStream(resource);
    16. sqlSessionFactory = new SqlSessionFactoryBuilder().build(InputStream);
    17. } catch (IOException e) {
    18. e.printStackTrace();
    19. }
    20. }
    21. //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
    22. // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
    23. public static SqlSession getSqlSession() {
    24. return sqlSessionFactory.openSession();
    25. }
    26. }

    第三步:编写代码

    (1)实体类

    1. package com.gt.pojo;
    2. //实体类
    3. public class User {
    4. private int id;
    5. private String name;
    6. private String pwd;
    7. public User() {
    8. }
    9. public User(int id, String name, String pwd) {
    10. this.id = id;
    11. this.name = name;
    12. this.pwd = pwd;
    13. }
    14. public void setId(int id) {
    15. this.id = id;
    16. }
    17. public void setName(String name) {
    18. this.name = name;
    19. }
    20. public void setPwd(String pwd) {
    21. this.pwd = pwd;
    22. }
    23. @Override
    24. public String toString() {
    25. return "User{" +
    26. "id=" + id +
    27. ", name='" + name + '\'' +
    28. ", pwd='" + pwd + '\'' +
    29. '}';
    30. }
    31. }

    (2)Dao接口

    1. package com.gt.dao;
    2. import com.gt.pojo.User;
    3. import java.util.List;
    4. public interface UserDao {
    5. /**
    6. * 获取用户列表
    7. * @return
    8. */
    9. //获取全部用户
    10. List getUserList();
    11. //根据ID查询用户
    12. User getUserById(int id);
    13. //insert一个用户
    14. int addUser(User user);
    15. //修改用户
    16. int updateUser(User user);
    17. //删除一个用户
    18. int deleteUser(int id);
    19. }

     

    (3)接口实现类(由原来的UserDaoImpl转为一个Mapper配置文件)  

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.zyy.dao.UserDao">
    5. <select id="getUserList" resultType="com.zyy.pojo.User">
    6. select id, name, pwd from `user`
    7. select>
    8. mapper>

    第四步:测试 

    注意点:

    org.apache.ibatis.binding.BindingException: Type interface com.zyy.dao.UserDao is not known to the MapperRegistry.

    Caused by: java.io.IOException: Could not find resource com/zyy/dao/UserMapper.xml  

     pom改成:

    1. <project xmlns="http://maven.apache.org/POM/4.0.0"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <parent>
    5. <artifactId>maven-studyartifactId>
    6. <groupId>com.zyygroupId>
    7. <version>1.0-SNAPSHOTversion>
    8. parent>
    9. <modelVersion>4.0.0modelVersion>
    10. <artifactId>mybatis-01artifactId>
    11. <build>
    12. <resources>
    13. <resource>
    14. <directory>src/main/resourcesdirectory>
    15. <includes>
    16. <include>**/*.propertiesinclude>
    17. <include>**/*.xmlinclude>
    18. includes>
    19. <filtering>falsefiltering>
    20. resource>
    21. <resource>
    22. <directory>src/main/javadirectory>
    23. <includes>
    24. <include>**/*.propertiesinclude>
    25. <include>**/*.xmlinclude>
    26. includes>
    27. <filtering>falsefiltering>
    28. resource>
    29. resources>
    30. <plugins>
    31. <plugin>
    32. <groupId>org.apache.maven.pluginsgroupId>
    33. <artifactId>maven-compiler-pluginartifactId>
    34. <version>3.10.0version>
    35. <configuration>
    36. <source>1.8source>
    37. <target>1.8target>
    38. configuration>
    39. plugin>
    40. plugins>
    41. build>
    42. project>

    (1)MapperRegistry是什么?

            核心配置文件中注册mappers

    (2)junit测试

    1. import com.zyy.pojo.User;
    2. import com.zyy.utils.MybatisUtils;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.junit.Test;
    5. import java.util.List;
    6. /**
    7. * @Description: 类描述
    8. * @Author: zyy
    9. * @Date: 2022/03/12 09:48
    10. */
    11. public class UserDaoTest {
    12. @Test
    13. public void getUserList() {
    14. SqlSession sqlSession = null;
    15. try {
    16. sqlSession = MybatisUtils.getSqlSession();
    17. UserDao userDao = sqlSession.getMapper(UserDao.class);
    18. List userList = userDao.getUserList();
    19. userList.forEach(user -> System.out.println(user.toString()));
    20. } finally {
    21. if (sqlSession != null) {
    22. sqlSession.close();
    23. }
    24. }
    25. }
    26. }

    输出结果:

    可能会遇到的问题

    1. 配置文件没有注册
    2. 绑定接口错误
    3. 方法名不对
    4. 返回类型不对
    5. Maven导出资源问题

  • 相关阅读:
    java-php-python-ssm校园约自习网站计算机毕业设计
    在乡村沃土上,架起一座直播间
    初识网络编程
    基于CGAN-LSTM的无监督网络异常流量检测算法
    经典蓝牙Inquiry过程的跳频
    php mysql
    Linux 操作系统速通
    分布式ID生成方案总结整理
    linux-用户管理
    PC_磁盘HDD_SSD/存储介质(材料工艺)
  • 原文地址:https://blog.csdn.net/qq_46423017/article/details/126266673