Mybatis 基础入门 -史上最简单的示例,从创建到基本的CRUD

举报
ksh1998 发表于 2021/12/26 00:02:26 2021/12/26
【摘要】 目录 简介: 项目创建:      创建:      导入maven依赖       创建mybatis工具类         创建配置文件       &nbsp...

目录

简介:

项目创建:

     创建:

     导入maven依赖

      创建mybatis工具类

        创建配置文件

                 新建工具类

基本使用:

 查询:

 插入:

修改:

删除:


简介:

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

项目创建:

     创建:

             

          

创建成功

     导入maven依赖 

          


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>TestMavenv</artifactId>
  7. <groupId>org.example</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>mybatis-Study</artifactId>
  12. <!--导入依赖-->
  13. <dependencies>
  14. <!--mysql驱动-->
  15. <dependency>
  16. <groupId>mysql</groupId>
  17. <artifactId>mysql-connector-java</artifactId>
  18. <version>5.1.46</version>
  19. </dependency>
  20. <!--mybatis-->
  21. <dependency>
  22. <groupId>org.mybatis</groupId>
  23. <artifactId>mybatis</artifactId>
  24. <version>3.5.2</version>
  25. </dependency>
  26. <!--junit-->
  27. <dependency>
  28. <groupId>junit</groupId>
  29. <artifactId>junit</artifactId>
  30. <version>4.11</version>
  31. </dependency>
  32. </dependencies>
  33. <!--配置文件过滤设置-->
  34. <build>
  35. <resources>
  36. <resource>
  37. <directory>src/main/resources</directory>
  38. <includes>
  39. <include>**/*.properties</include>
  40. <include>**/*.xml</include>
  41. </includes>
  42. <filtering>true</filtering>
  43. </resource>
  44. <resource>
  45. <directory>src/main/java</directory>
  46. <includes>
  47. <include>**/*.properties</include>
  48. <include>**/*.xml</include>
  49. </includes>
  50. <filtering>true</filtering>
  51. </resource>
  52. </resources>
  53. </build>
  54. </project>

      创建mybatis工具类

 

         创建配置文件

                        

                      配置文件放到resource的文件夹里


  
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!--核心配置文件-->
  6. <configuration>
  7. <environments default="development">
  8. <!--具体配置-->
  9. <environment id="development">
  10. <transactionManager type="JDBC"/>
  11. <dataSource type="POOLED">
  12. <property name="driver" value="com.mysql.jdbc.Driver"/>
  13. <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
  14. <property name="username" value="root"/>
  15. <property name="password" value="root"/>
  16. </dataSource>
  17. </environment>
  18. </environments>
  19. </configuration>

      

   新建工具类

 项目结构


  
  1. package com.kuang.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. /**
  9. * @program: TestMavenv
  10. * @description: mybatis工具类
  11. * @author: 康世行
  12. * @create: 2021-03-27 11:35
  13. * SqlSessionFactory
  14. */
  15. public class MybatisUtils {
  16. static SqlSessionFactory sqlSessionFactory=null;
  17. static {
  18. try {
  19. //使用mybatis第一步;获取sqlsessionFactory对象,用于获取SQL执行对象。
  20. String resource = "mybatis-config.xml";
  21. InputStream inputStream = Resources.getResourceAsStream(resource);
  22. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  23. }catch (IOException e){
  24. e.printStackTrace();
  25. }
  26. }
  27. /**
  28. *@Description: 执行sql的对象
  29. *@Param:
  30. *@return:
  31. *@Author: 康世行
  32. *@date: 2021-03-27
  33. */
  34. public static SqlSession getsqlsessiton(){
  35. SqlSession sqlSession = sqlSessionFactory.openSession();//获取执行SQL的对象
  36. return sqlSession;
  37. }
  38. }

基本使用:

            1.新建实体(对应你自己使用的数据库里的表)

                


  
  1. package com.kuang.pojo;
  2. /**
  3. * @program: TestMavenv
  4. * @description: 实体
  5. * @author: 康世行
  6. * @create: 2021-03-27 11:49
  7. */
  8. public class User {
  9. private int id;
  10. private String name;
  11. private String pwd;
  12. public User(int id, String name, String pwd) {
  13. this.id = id;
  14. this.name = name;
  15. this.pwd = pwd;
  16. }
  17. public User() {
  18. }
  19. public int getId() {
  20. return id;
  21. }
  22. public void setId(int id) {
  23. this.id = id;
  24. }
  25. public String getName() {
  26. return name;
  27. }
  28. public void setName(String name) {
  29. this.name = name;
  30. }
  31. public String getPwd() {
  32. return pwd;
  33. }
  34. public void setPwd(String pwd) {
  35. this.pwd = pwd;
  36. }
  37. @Override
  38. public String toString() {
  39. return "User{" +
  40. "id=" + id +
  41. ", name='" + name + '\'' +
  42. ", pwd='" + pwd + '\'' +
  43. '}';
  44. }
  45. }

            2.新建DAO层接口

         


  
  1. package com.kuang.dao;
  2. import com.kuang.pojo.User;
  3. import java.util.List;
  4. /**
  5. * @program: TestMavenv
  6. * @description: DAo接口
  7. * @author: 康世行
  8. * @create: 2021-03-27 12:50
  9. */
  10. public interface UserDAo {
  11. /**
  12. *@Description: 获取用户信息
  13. *@Param:
  14. *@return:
  15. *@Author: 康世行
  16. *@date: 2021-03-27
  17. */
  18. List<User> getUserList();
  19. /**
  20. *@Description: 插入用户信息
  21. *@Param: id,name ,pwd
  22. *@return:
  23. *@Author: 康世行
  24. *@date: 2021-03-27
  25. */
  26. int insertInfo(User user);
  27. /**
  28. *@Description: 修改用户信息
  29. *@Param: user
  30. *@return: 1或0
  31. *@Author: 康世行
  32. *@date: 2021-03-27
  33. */
  34. int updateInfo(User user);
  35. /**
  36. *@Description: 删除指定用户
  37. *@Param:
  38. *@return:
  39. *@Author: 康世行
  40. *@date: 2021-03-27
  41. */
  42. int deletInfo(int id);
  43. }

 查询:

                   新建UserMappr.xml文件,用于实现UserDAo接口,相当于实现类。

             


  
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!--namespace=绑定一个对应的DAO/Mapper接口-->
  6. <mapper namespace="com.kuang.dao.UserDAo">
  7. <!--查询 id="接口里的方法名称 " resultype ="返回值类型"-->
  8. <select id="getUserList" resultType="com.kuang.pojo.User">
  9. select * from User
  10. </select>
  11. <!--插入 id="接口里的方法名称 " parameterType="参数类型" -->
  12. <insert id="insertInfo" parameterType="com.kuang.pojo.User">
  13. insert into mybatis.User(id,name ,pwd) values (#{id},#{name},#{pwd})
  14. </insert>
  15. <!--修改-->
  16. <update id="updateInfo" parameterType="com.kuang.pojo.User">
  17. update mybatis.User set name=#{name} where id=#{id} and pwd=#{pwd}
  18. </update>
  19. <!--删除-->
  20. <delete id="deletInfo" parameterType="int">
  21. delete from mybatis.User where id = #{id}
  22. </delete>
  23. </mapper>

       回到mybatis-config.xml里面完善下配置文件,注册mapper(添加红框里的内容)

       resourec里的地址根据你自己的mappr文件的地址填写即可

       

            调用测试方法:

           


  
  1. /**
  2. *@Description: 查询
  3. *@Param:
  4. *@return:
  5. *@Author: 康世行
  6. *@date: 2021-03-27
  7. */
  8. @Test
  9. public void getUserIfo(){
  10. //第一步获取sqlsession对象
  11. SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
  12. //第二步执行(通过class文件获取UserDAo对象) 第一种方式
  13. UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
  14. List<User> userList = mapper.getUserList();
  15. //遍历数组
  16. for (User user : userList) {
  17. System.out.println(user);
  18. }
  19. //释放资源
  20. getsqlsessiton.close();
  21. }

             结果:

             

 插入:

             调用测试方法:


  
  1. /**
  2. *@Description: 插入一个用户
  3. *@Param:
  4. *@return:
  5. *@Author: 康世行
  6. *@date: 2021-03-27
  7. */
  8. @Test
  9. public void insertIfo(){
  10. //第一步获取sqlsession对象
  11. SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
  12. //第二步获取对象
  13. UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
  14. int i = mapper.insertInfo(new User(19980, "ksh", "aaa"));
  15. if(i>0){
  16. System.out.println(i);
  17. System.out.println("信息插入成功");
  18. //提交事务
  19. getsqlsessiton.commit();
  20. }else {
  21. System.out.println("信息插入失败");
  22. }
  23. getsqlsessiton.close();
  24. }

 这里需要注意下,事务。getsqlsessiton.commit();提交事务,如果落了这步数据就不会插入到数据库。  (增删改都需要这步)         

 结果:

修改:      

           调用测试方法:


  
  1. /**
  2. *@Description: 修改用户信息
  3. *@Param:
  4. *@return:
  5. *@Author: 康世行
  6. *@date: 2021-03-27
  7. */
  8. @Test
  9. public void updateInfo(){
  10. //第一步获取 sqlSession对象
  11. SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
  12. //第二步获取接口的对象
  13. UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
  14. //执行方法
  15. int i = mapper.updateInfo(new User(12, "aaa", "a"));
  16. if(i>0){
  17. System.out.println("信息修改成功");
  18. //提交事务
  19. getsqlsessiton.commit();
  20. }else {
  21. System.out.println("信息修改失败");
  22. }
  23. }

            结果:

               修改前:

               

               修改后:

          

          

删除:

         调用测试方法:

    


  
  1. /**
  2. *@Description: 删除用户信息
  3. *@Param:
  4. *@return:
  5. *@Author: 康世行
  6. *@date: 2021-03-27
  7. */
  8. @Test
  9. public void deleteInfo(){
  10. //第一步获取 sqlSession对象
  11. SqlSession getsqlsessiton = MybatisUtils.getsqlsessiton();
  12. //第二步获取接口的对象
  13. UserDAo mapper = getsqlsessiton.getMapper(UserDAo.class);
  14. int i = mapper.deletInfo(12);
  15. if(i>0){
  16. System.out.println("用户删除成功");
  17. //提交事务
  18. getsqlsessiton.commit();
  19. }
  20. }

           结果:

          

 

       删除之后的表内用户数据(id= 1998的用户已经被删除了)

参考手册:https://mybatis.org/mybatis-3/zh/getting-started.html

 

文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。

原文链接:kangshihang.blog.csdn.net/article/details/115266747

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。