代码地址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. GdiPlus[57]: 图像(九) IGPBitmap 特有的属性与方法
  2. Day 8 面向对象
  3. 菜鸟学习MVC实录:弄清项目各类库的作用和用法
  4. NLP产品级系统设计模式
  5. Less的@import指令
  6. 嵌套地狱_解决嵌套业务逻辑_使用Js的对象_避免数组嵌套---SpringCloud Alibaba_若依微服务框架改造_ElementUI---工作笔记016
  7. linux0.11 init函数,linux0.11启动与初始化
  8. linux git 显示 分支,Linux 终端显示 Git 当前所在分支
  9. 生成SQL SERVER数据库脚本
  10. LSTM神经网络在证券市场分析上的应用
  11. MTK DDR进行ETT之后的压力测试--代码调整
  12. 设计模式在项目中的应用案例_三菱PLC实际项目应用案例讲解
  13. mysql的四大特性(AICD)
  14. 国家级赛事正式开赛 | 2019数字中国创新大赛上线
  15. LIU学生成绩管理系统源码【演示视频】
  16. 翻遍“微信小程序”的所有知乎问答,我们整理了大家最关注几个话题
  17. Mybatis中,SQLSessionFactoryBuilder使用build方法时做了哪些事?
  18. linux英伟达显卡内核不匹配,Linux 5.11 内核将添加对英伟达 RTX 30 系列显卡的支持...
  19. 软件的成本与定价如何决策?PMP软件开发规模估算和成本估算方法详解
  20. mysql导入txt_mysql怎么导入txt文件?

热门文章

  1. 101. 最高的牛【差分 思维】
  2. 大数取余的原理和模板
  3. golang使用iota
  4. Spring boot的Restful风格CRUD
  5. Spring boot控制台运行
  6. MySQL读写分离事务策略实现
  7. 怎样查看电脑系统版本_微信7.0.0自动更新后怎样去还原以前的旧版本?
  8. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener错误解决方案
  9. shiro教程(2)- shiro介绍
  10. Mysql安装注意问题