代码地址https://www.lanzouw.com/ihOmnwdtbrc

请先看项目目录结构,然后再写代码。target是编译后的输出目录,只需要保证src目录目录一致就行。

1、创建数据库mybatis和表User,并插入数据

DROP DATABASE IF EXISTS mybatis;
CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE User(id int(11) NOT NULL AUTO_INCREMENT,name VARCHAR(32) NOT NULL,age int(3),PRIMARY KEY (id))ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
USE mybatis;
INSERT INTO User(name, age)
VALUES
("张三", 12),
("李四", 14),
("王华", 10),
("lucy", 20),
("mary", 22);

2、创建maven工程,创建实体类User

  • 导入lombok、mysql驱动、mybatis、junit四个jar包。使用lombok注解可以帮我们自动实现setter和getter、toString功能,让代码看起来更简洁,更容易修改。
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope></dependency>
  • 创建实体类User,其中注解@Data会帮我们自动生成类的setter、getter、toString方法
package com.changqing.pojo;import lombok.Data;//实体类,对应数据表User
@Data
public class User {private int id;private String name;private int age;public User(){}public User(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public User(String name, int age){this.name=name;this.age=age;}}

3、定义UserDao接口和UserMapper.xml映射文件

  • 定义UserDao接口,定义我们所需要的数据库操作方法,增删改查等等
package com.changqing.dao;import com.changqing.pojo.Student;
import com.changqing.pojo.User;import java.util.List;
import java.util.Map;public interface UserDao {//获取所有数据public List<User> getUserList();//根据id查询数据public Map<String, String> selectById(int id);//增加数据public void addUser(User user);//通过map来增加数据public void addUser2(Map<String, Object>map);//通过map来修改数据public void updateUser(Map<String, Object>map);//删除数据public void deleteUser(int id);//批量删除数据>idpublic void deleteBatch(int id);//模糊查询public List<User> selectNameLike(String value);//分页查询public List<User> getLimitUser(Map<String, Object> map);//使用注解不使用参数来获取Users, 不需要在xml写sql语句,但是适用范围很小@Select("select * from user")public List<User> getUsers();//测试注解,使用参数, 多个参数必须加上@Param, 仅有一个参数,可以加@Param也可以不加,但是规范写法都应该加上@Select("select * from user where id=#{id} and name=#{name}")User getUser(@Param("id") int id,  @Param("name") String name);}
  • 定义UserMapper.xml映射文件。这个文件的作用相当于UserDao接口的实现类作用。在JDBC中,我们需要定义接口然后实现接口,这里的UserMapper.xml文件相当于JDBC中的实现类。其中namespace对应UserDao的全限定名,即com.changqing.dao.UserDao。id对应UserDao中的方法名,ParameterType是方法参数类型,resultType对应返回的类型,这里就是User对象。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--这里的namesapce的值位UserDao,即将这个UserMapper配置文件绑定到UserDao接口上,相当于这个xml文件实现UserDao接口, 其中的id对应UserDao中的方法名-->
<mapper namespace="com.changqing.dao.UserDao"><select id="getUserList" resultType="com.changqing.pojo.User">select * from User</select><select id="selectById" parameterType="int" resultType="hashmap">select * from User where id=#{id}</select><insert id="addUser" parameterType="com.changqing.pojo.User">insert into User(name, age) values(#{name}, #{age})</insert><insert id="addUser2" parameterType="map">insert into User(id, name, age) values (#{userid}, #{username}, #{userage})</insert><update id="updateUser" parameterType="map">update User set name=#{username}, age=#{userage} where id=#{userid}</update><delete id="deleteUser" parameterType="int">delete from User where id=#{id}</delete><delete id="deleteBatch" parameterType="int">delete  from User where id>#{id}</delete><!--因为在myatis中建立别名 typeAliases,所以可以直接使用类名--><select id="selectNameLike" parameterType="String" resultType="User">select * from   User  where name like concat('%',#{0},'%')</select><!--    分页查询--><select id="getLimitUser" parameterType="map" resultType="com.changqing.pojo.User">select * from User limit #{startIndex}, #{pageSize}</select></mapper>

4、定义Mybatis-config.xml主配置文件

  • 这里的<properties reouse="jdbc.properties">是导入外部的数据源的xml,目的是将数据源信息和主配置文件解耦。Mybatis-config.xml使用<property name="***" value="***">来引入具体的配置参数。好处是如果以后需要修改数据源信息,只用在jdbc.propertis文件中修改,不需要修改Mybatis-config.xml文件。
  • <typeAliases>可以使用别名,会自动导入所有com.changqing.pojo包下的所有类,并直接使用类名作为别名,这样的好处使得UserMapper文件的resultType值可以直接使用非全限定名,不需要使用全限定名 。
  • <mappers>标签用于将UserMapper.xml注册到Mybatis中,后续的代码才能使用UserDao接口。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration><!--引用jdbc.properties文件,可以在下面直接应用jdbc.properties的值--><properties resource="jdbc.properties"/><typeAliases><package name="com.changqing.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--                不使用jdbc.properties配置文件,直接在mybatis配置文件里填入参数--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="199604"/><!--                使用jdbc.properties配置文件-->
<!--                <property name="driver" value="${driver}"/>-->
<!--                <property name="url" value="${url}"/>-->
<!--                <property name="username" value="${username}"/>-->
<!--                <property name="password" value="${password}"/>--></dataSource></environment></environments><mappers><!--将UserMapper注册到mybatis中,--><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

(可选)5、编写jdbc的配置文件jdbc.properties

这样的好处是将jdbc和mybatis配置文件解耦,修改jdbc连接信息只需要修改jdbc.properties文件即可。如果使用这个文件,请将上面的被注释的<property>取消注释。

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username=root
password=199604

6、创建工具类MybatisUtils来返回SqlSession

package com.changqing.utils;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 java.io.InputStream;public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try{String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}catch (Exception e){e.printStackTrace();}}public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();}
}

7、编写测试类进行测试

package test;import com.changqing.dao.UserDao;
import com.changqing.pojo.Student;
import com.changqing.pojo.User;import com.changqing.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.AfterClass;
import org.junit.Test;import java.util.HashMap;
import java.util.List;
import java.util.Map;public class TestUser {private static final SqlSession sqlSession = MybatisUtils.getSqlSession();private static final UserDao userDao = sqlSession.getMapper(UserDao.class);//查找全部数据@Testpublic void testUser(){List<User> userList = userDao.getUserList();for(User user: userList){System.out.println(user);}}//按id查找@Testpublic void test2(){Map<String, String> user = userDao.selectById(1);System.out.println(user);}//添加数据,使用对象来传入参数@Testpublic void addUser(){User user = new User("张明",23);userDao.addUser(user);sqlSession.commit();}//添加数据,使用map传入多个参数@Testpublic void addUser2(){Map<String, Object> map = new HashMap<>();map.put("userid", 12);map.put("username", "李明");map.put("userage", 25);userDao.addUser2(map);sqlSession.commit();}//更新数据@Testpublic void updateUser(){Map<String, Object> map = new HashMap<>();map.put("userid", 7);map.put("username", "nancy");map.put("userage", 34);userDao.updateUser(map);sqlSession.commit();}//删除指定id的数据@Testpublic void deleteUser(){userDao.deleteUser(18);sqlSession.commit();}@Test//批量删除数据,删除>id的数据public void deleteBatch(){userDao.deleteBatch(5);sqlSession.commit();}//根据姓名进行模糊查询@Testpublic void selectNameLike(){List<User> userList = userDao.selectNameLike("张");for(User user: userList){System.out.println(user);}}//测试分页查询@Testpublic void getLimitUser(){Map<String, Object> map = new HashMap<>();map.put("startIndex", 2); ///索引是从0开始计算的, 会从索引为startIndex的数据开始返回,返回pageSize个数据, 即会从第startIndex+1数开始返回map.put("pageSize", 2);List<User> userList = userMapper.getLimitUser(map);for(User user: userList){System.out.println(user);}}//测试mybatis注解功能,只能实现简单功能,而且必须保证数据库的列名和实体类User的属性名一致才可以用,局限性比较大@Testpublic void testAnnotation(){List<User> userList = userMapper.getUsers();for(User user: userList){System.out.println(user);}}//测试注解,使用参数@Testpublic void testAnnotationWithArgs(){User user = userMapper.getUser(1, "张三");System.out.println(user);}//在上面每个方法执行后,都会默认执行这个方法来关闭sqlSession@AfterClasspublic static void closeSql(){//查询System.out.println(".......................................");List<User> userList = userDao.getUserList();for(User user: userList){System.out.println(user);}sqlSession.close();}
}

Mybatis-增删改查模糊查询分页注解(普通类型参数、引用类型参数、Map类型参数)相关推荐

  1. MySql数据库的增删改查模糊查询

    MySql去笛卡尔积查询:select * from dept d,emp e where d.did=e.id 模糊查询的话查询全部数据如下 like 是模糊查询的意思  %是像的意思 比如 李% ...

  2. 【狂神MyBatis笔记】map作为参数传递类型进行增删改查模糊查询

    接口中的参数传入map: 实现类的传入参数为map的键的名称,这个键可以自定义名称: 例:根据ID获取用户 接口: //根据ID获取用户User getUserById2(Map<String, ...

  3. Java操作Mongodb数据(增删改查聚合查询)

    文章目录 一.Java操作MongoDB 二.使用步骤 1.基础配置 2.实体类 3.MongoDB表数据 3.增删改查聚合查询 总结 一.Java操作MongoDB 上一篇文章介绍了,如何在本地使用 ...

  4. SSH(Struts 2.3.31 + Spring 4.1.6 + Hibernate 5.0.12 + Ajax)框架整合实现简单的增删改查(包含分页,Ajax 无刷新验证该用户是否存在)...

    软件152 余建强 该文将以员工.部门两表带领大家进入SSH的整合教程: 源码下载:http://download.csdn.net/detail/qq_35318576/9877235 SSH 整合 ...

  5. SSM框架——Mybatis增删改查

    目录 目录 环境配置 增删改查的实现 查询全部 查询单个ID 添加用户 修改用户 删除用户 增删改查-使用注解开发 思路流程:搭建环境-->导入Mybatis--->编写代码---> ...

  6. ios mysql 修改数据,iOS数据库FMDB--增删改查(模糊查询)实写记录

    在iOS中,主要有5种数据缓存的策略: 1.plist 2.归档 3.偏好设置 4.沙盒文件 5."SQLite数据库" 其中,"SQLite数据库" 是最常用 ...

  7. ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍

    简介: 很早就想整理一下数据库的使用了,刚好最近接触较多,加之可以安排出空余的时间,所以瓜子我贡献出自己喝咖啡的时间整理一下FMDB的使用,以下是对FMDB的介绍以及基本使用 --- insert.d ...

  8. Mybatis——增删改查(CRUD)操作

    java学习--Mybatis CRUD操作 mybatis是一个可以自定义SQL.存储过程和高级映射的持久层框架.上面这个定义是在百度上抄的,简单来说,Mybatis简化了我们对数据库的一系列操作, ...

  9. Mybatis增删改查

    增删改查基本上就是一个操作,一模一样的,首先是UserMpper接口: package com.ftz.Demo.dao;import com.ftz.Demo.po.User;import java ...

最新文章

  1. windows : Jmeter自动化测试-eclipse+maven+jmeter
  2. 节后收心困难?这15篇论文,让你迅速找回学习状态
  3. Drupal 为前台(Front page)页面添加区域(Regions)
  4. 什么是HBase?它是怎样工作的?终于有人讲明白了
  5. 毕马威_【毕马威快讯】毕马威发布个人信息保护法(草案)概览
  6. 力扣1232.缀点成线
  7. php生成 优惠券 激活码
  8. AtCode Beginner Contest 096
  9. mac系统调节鼠标、触控板灵敏度
  10. Python编程工具:Jupyter notebook
  11. 利用python脚本根据DOI号自动查询参考文献信息
  12. B. Silly Mistake
  13. 元气骑士怎么用电脑玩 元气骑士手游模拟器教程
  14. Navicat提示Access violation at address ... in module ‘navicat.exe‘.Write of address ...
  15. python列表逆序
  16. 50 行代码爬取链家租房信息
  17. ios适配暗黑模式-图片、颜色
  18. 地球系统模式(CESM)
  19. 大数据营销更需要消费者洞察
  20. 十五、《大数据项目实战之用户行为分析》HBase数据表操作

热门文章

  1. 应用session对象实现用户登录
  2. OPPO A59s手机系统时间停止运行
  3. 【PAT乙级】1029 旧键盘 (20 分)
  4. 第二章 MCS-51单片机硬件结构与工作原理
  5. Dubbo序列化对象
  6. JVM中GC小对象配置
  7. 有了这篇你还说你不会redis性能优化、内存分析及优化
  8. LinkedList集合
  9. python grid用法_Python numpy.mgrid函数方法的使用
  10. 「归纳|总结」程序员必知必会的十大排序算法