MyBatis框架:第三章:传统方式mybatis的增,删,改,查实现

简介: MyBatis框架:第三章:传统方式mybatis的增,删,改,查实现

传统方式mybatis的增,删,改,查实现

准备工作

创建java Project项目,建库建表插入数据,到数据库中执行,导入jar包

添加mybatis的核心jar

添加mysql数据库连接驱动

添加log4j日记需要的核心jar

在config目录下添加 log4j.propreties代码:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

开始编写

在config目录下添加 mybatis-config.xml代码:

<?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 是配置多个jdbc环境 
    default表示使用的默认环境 
   -->
  <environments default="development">
    <!-- 
      environment 标签用来配置一个环境 
        id 是环境的标识
     -->
    <environment id="development">
      <!-- 
        transactionManager  配置使用什么样类型的数据库事务管理
           type="JDBC"    表示启用事务,有commit和rollback操作
           type="MANAGED" 表示不直接控制事务。交给容器处理几乎不用。
       -->
      <transactionManager type="JDBC" />
      <!-- 
        dataSource标签配置连接池
          type="POOLED" 表示启用数据库连接池
          type="UNPOOLED" 表示不启用数据库连接池
       -->
      <dataSource type="POOLED">
        <!-- 连接数据库的驱动类 -->
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <!-- 数据库访问地址 -->
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
        <!-- 数据库用户名 -->
        <property name="username" value="root" />
        <!-- 数据库密码 -->
        <property name="password" value="root" />
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <!-- 导入mapper配置文件 -->
    <mapper resource="com/pojo/UserMapper.xml" />
  </mappers>
</configuration>

创建一个UserDao接口

public interface UserDao {
  // 保存用户
  public int saveUser(User user);    
  // 更新用户
  public int updateUser(User user);    
  // 根据id删除用户
  public int deleteUserById(int id);    
  // 根据id搜索用户
  public User findUserById(int id);    
  // 搜索全部用户
  public List<User> findUsers();    
}

编写UserMapper.xml中的配置

<?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">
  <!-- 
    namespace属性是名称空间的意思。
    功能相当于 给配置文件定义一个包名。
    一般情况下。可以写两种值,一种是对应类的全类名
    一种情况是。对应类的处理接口全类名
   -->
<mapper namespace="com.pojo.User">
  <!-- 插入用户
    parameterType 属性设置参数类型
    id 为使用的标识
  -->
  <insert id="saveUser" parameterType="com.pojo.User">
    insert into t_user(last_name,sex) values(#{lastName},#{sex})
  </insert>
  <!-- 更新用户 
    parameterType 属性设置参数类型
    id 为使用的标识
    -->
  <update id="updateUser" parameterType="com.pojo.User">
    update t_user
      set
    last_name = #{lastName},
    sex = #{sex}
      where
    id = #{id}
  </update>
  <!-- 根据id删除用户
    parameterType 属性设置参数类型
    id 为使用的标识        
     -->
  <delete id="deleteUserById" parameterType="int">
    delete from t_user where id = #{id}
  </delete>
  <!-- 根据id搜索用户
    parameterType 属性设置参数类型
    id 为使用的标识 
    resultType 属性是返回的类型
     -->
  <select id="findUserById" parameterType="int" resultType="com.pojo.User">
    select id,last_name lastName,sex from t_user where id = #{id}
  </select>
  <!-- 搜索全部用户
    id 为使用的标识 
    resultType 属性是返回的类型
     -->
  <select id="findUsers" resultType="com.pojo.User">
    select id,last_name lastName,sex from t_user
  </select>
</mapper>

UserDaoImpl代码:

public class UserDaoImpl implements UserDao {
  SqlSessionFactory sqlSessionFactory;
  public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
    this.sqlSessionFactory = sqlSessionFactory;
  }
  @Override
  public int saveUser(User user) {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    int result = 0;
    try {
      result = sqlSession.insert("com.pojo.User.saveUser", user);
      //提交事务
      sqlSession.commit();
    } finally {
      sqlSession.close();
    }
    return result;
  }
  @Override
  public int updateUser(User user) {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    int result = 0;
    try {
      result = sqlSession.update("com.pojo.User.updateUser", user);
      //提交事务
      sqlSession.commit();
    } finally {
      sqlSession.close();
    }
    return result;
  }
  @Override
  public int deleteUserById(int id) {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    int result = 0;
    try {
      result = sqlSession.delete("com.pojo.User.deleteUserById", id);
      //提交事务
      sqlSession.commit();
    } finally {
      sqlSession.close();
    }
    return result;
  }
  @Override
  public User findUserById(int id) {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    User result = null;
    try {
      result = sqlSession.selectOne("com.pojo.User.findUserById", id);
      //提交事务
      sqlSession.commit();
    } finally {
      sqlSession.close();
    }
    return result;
  }
  @Override
  public List<User> findUsers() {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    List<User> result = null;
    try {
      result = sqlSession.selectList("com.pojo.User.findUsers");
      //提交事务
      sqlSession.commit();
    } finally {
      sqlSession.close();
    }
    return result;
  }
}

测试类:

public class UserDaoTest {
  static UserDao userDao;
  /**
   * @BeforeClass标注的方法会在所有测试之前执行之前执行一次
   * @throws Exception
   */
  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
    String url = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(url);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    userDao = new UserDaoImpl(sqlSessionFactory);
  }
  @Test
  public void testSaveUser() {
    userDao.saveUser(new User(null,"admins",0));
  }
  @Test
  public void testUpdateUser() {
    userDao.updateUser(new User(2, "admin", 1));
  }
  @Test
  public void testDeleteUserById() {
    userDao.deleteUserById(2);
  }
  @Test
  public void testFindUserById() {
    System.out.println(userDao.findUserById(1));
  }
  @Test
  public void testFindUsers() {
    System.out.println(userDao.findUsers());
  }
}
相关文章
|
2月前
|
Java 数据库连接 Maven
后端框架学习-----mybatis(使用mybatis框架遇到的问题)
这篇文章总结了在使用MyBatis框架时可能遇到的几个常见问题及其解决方法,包括配置文件注册、接口绑定、方法名匹配、返回类型匹配、Maven资源导出、时区设置和字符编码问题。
|
2月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
2月前
|
Java 数据库连接 mybatis
mybatis框架图
文章介绍了MyBatis框架的起源、发展和其作为持久层框架的功能,提供了MyBatis的框架图以帮助理解其结构和组件。
mybatis框架图
|
2月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
2月前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
2月前
|
Java 数据库连接 测试技术
后端框架的学习----mybatis框架(8、lombok)
这篇文章介绍了如何在MyBatis框架中使用lombok库来简化Java实体类的编写,包括在IDEA中安装Lombok插件、在项目中导入lombok依赖以及在实体类上使用Lombok提供的注解。
|
2月前
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。
|
3月前
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
65 4
|
2月前
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
17 0
|
2月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
179 0
下一篇
无影云桌面