Mybatis学习笔记(3)--MyBatis的原始Dao开发模式

2024-06-14 18:32

本文主要是介绍Mybatis学习笔记(3)--MyBatis的原始Dao开发模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.User.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:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="user"><!-- id:statement的id 或者叫做sql的id --><!-- parameterType:声明输入参数的类型 --><!-- resultType:声明输出结果的类型,应该填写pojo的全路径 --><!-- #{}:输入参数的占位符,相当于jdbc的? --><select id="queryUserId" parameterType="int"resultType="com.skiff.www.domain.User">select * from user where id = #{id}</select><!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 --><!-- resultType的配置和返回一个结果的配置一样 --><select id="queryUserByUsername1" parameterType="string"resultType="com.skiff.www.domain.User">SELECT * FROM user WHERE username LIKE #{username}</select><!-- 如果传入的参数是简单数据类型,${}里面必须写value --><select id="queryUserByUsername2" parameterType="string"resultType="com.skiff.www.domain.User">SELECT * FROM `user` WHERE username LIKE '%${value}%'</select><!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 --><!-- 保存用户 --><insert id="saveUser" parameterType="com.skiff.www.domain.User"><!-- selectKey 标签实现主键返回 --><!-- keyColumn:主键对应的表中的哪一列 --><!-- keyProperty:主键对应的pojo中的哪一个属性 --><!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql --><!-- resultType:设置返回的id的类型 --><selectKey keyColumn="id" keyProperty="id" order="AFTER"resultType="int">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO `user`(username,birthday,sex,address) VALUES(#{name},#{birthday},#{sex},#{address})</insert><!-- 更新用户 --><update id="updateUserById" parameterType="com.skiff.www.domain.User">UPDATE `user` SETusername = #{name},address = #{address},birthday = #{birthday} WHERE id = #{id}</update><!-- 删除用户 --><delete id="deleteUserById" parameterType="int">delete from user whereid=#{id}</delete></mapper>


2.sqlMapConfig.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><!-- 和spring整合后 environments配置将废除 --><environments default="development"><environment id="development"><!-- 使用jdbc事务管理 --><transactionManager type="JDBC" /><!-- 数据库连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /><property name="username" value="root" /><property name="password" value="123456" /></dataSource></environment></environments><mappers><mapper  resource="sqlmap/User.xml"/><mapper  resource="sqlmap/Order.xml"/></mappers> 
<!-- 	<mappers><package name="com.skiff.www.mapper"/></mappers> -->
</configuration>



3.dao接口:UserDao.java

/**     * @文件名称: UserDao.java   * @描述: TODO  * @作者:  一叶扁舟(skiff)* @时间:2018年1月9日 下午3:20:26  * @版本:V1.0     */ 
package com.skiff.www.dao;import com.skiff.www.domain.User;/**  * @类功能说明:    * @作者: 一叶扁舟 (skiff)* @创建时间:2018年1月9日 下午3:20:26  * @版本:V1.0  */
public interface UserDao {//通过用户ID查询一个用户public User selectUserById(Integer id);
}

4.dao实现类

/**     * @文件名称: UserDaoImpl.java   * @描述: TODO  * @作者:  一叶扁舟(skiff)* @时间:2018年1月9日 下午3:22:04  * @版本:V1.0     */ 
package com.skiff.www.dao.impl;import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import com.skiff.www.dao.UserDao;
import com.skiff.www.domain.User;/**  * @类功能说明:    * @作者: 一叶扁舟 (skiff)* @创建时间:2018年1月9日 下午3:22:04  * @版本:V1.0  */
public class UserDaoImpl implements UserDao{//注入private SqlSessionFactory sqlSessionFactory;public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory = sqlSessionFactory;}//通过用户ID查询一个用户public User selectUserById(Integer id){SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSession.selectOne("queryUserId", id);}//通过用户名称模糊查询public List<User> selectUserByUsername(Integer id){SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSession.selectList("queryUserId", id);}
}



5.dao测试类

/**     * @文件名称: UserDaoTest.java   * @描述: TODO  * @作者:  一叶扁舟(skiff)* @时间:2018年1月9日 下午3:25:52  * @版本:V1.0     */ 
package test.com.skiff.www.testUser;import java.io.InputStream;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;import com.skiff.www.dao.UserDao;
import com.skiff.www.dao.impl.UserDaoImpl;
import com.skiff.www.domain.User;/**  * @类功能说明:    * @作者: 一叶扁舟 (skiff)* @创建时间:2018年1月9日 下午3:25:52  * @版本:V1.0  */
public class UserDaoTest {public SqlSessionFactory sqlSessionFactory;@Beforepublic void before() throws Exception {//加载核心配置文件String resource = "sqlMapConfig.xml";InputStream in = Resources.getResourceAsStream(resource);//创建SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(in);}@Testpublic void testDao() throws Exception {//注入session工厂UserDao userDao = new UserDaoImpl(sqlSessionFactory);//调用dao方法查询出结果User user = userDao.selectUserById(31);System.out.println(user);}
}




这篇关于Mybatis学习笔记(3)--MyBatis的原始Dao开发模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061185

相关文章

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

MyBatis中的大于等于、小于等于写法

《MyBatis中的大于等于、小于等于写法》MyBatisXML映射文件中处理大于等于和小于等于符号的两种方法:使用转义字符和CDATA块,转义字符更为常见,而CDATA块则提供了一种更易读的解决方案... 目录1. 使用转义字符(推荐)2. 使用 CDATA 块注意事项总结在 MyBATis 的 XML