第一个Mybatis程序

核心配置文件mybatis-config.xml

  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. <configuration>
  6. <environments default="development">
  7. <environment id="development">
  8. <transactionManager type="JDBC"/>
  9. <dataSource type="POOLED">
  10. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  11. <property name="url" value="jdbc:mysql://localhost:3306/db4?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
  12. <property name="username" value="root"/>
  13. <property name="password" value="root"/>
  14. </dataSource>
  15. </environment>
  16. </environments>
  17. <mappers>
  18. <mapper resource="com/dao/UserMapper.xml"/>
  19. </mappers>
  20. </configuration>

编写mybatis工具类

  1. public class MybatisUtils {
  2. private static SqlSessionFactory sqlSessionFactory;
  3. static {
  4. try {
  5. String resource = "mybatis-config.xml";
  6. InputStream inputStream = Resources.getResourceAsStream(resource);
  7. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
  11. }
  12. public static SqlSession getSqlSession() {
  13. return sqlSessionFactory.openSession();
  14. }
  15. }

编写代码

  • 实体类User
  1. public class User {
  2. private int id;
  3. private String username;
  4. private String password;
  5. }
  6. //重写方法toString方法等
  • Dao接口UserMapper.java
  1. public interface UserMapper {
  2. List<User> getUserList();
  3. }
  • 接口实现类Mapper配置文件UserMapper.xml
  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. <mapper namespace="com.dao.UserMapper">
  6. <select id="getUserList" resultType="com.pojo.User">
  7. select * from db4.user
  8. </select>
  9. </mapper>
  • test类
  1. public class test {
  2. @Test
  3. public void test1(){
  4. SqlSession sqlSession = MybatisUtils.getSqlSession();
  5. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  6. List<User> userList = userMapper.getUserList();
  7. for (User user : userList) {
  8. System.out.println(user);
  9. }
  10. sqlSession.close();
  11. }
  12. }
  • 约定大于配置
  1. <build>
  2. <resources>
  3. <resource>
  4. <directory>src/main/resources/</directory>
  5. <includes>
  6. <include>**/*.properties</include>
  7. <include>**/*.xml</include>
  8. </includes>
  9. <filtering>true</filtering>
  10. </resource>
  11. <resource>
  12. <directory>src/main/java</directory>
  13. <includes>
  14. <include>**/*.properties</include>
  15. <include>**/*.xml</include>
  16. </includes>
  17. <filtering>true</filtering>
  18. </resource> </resources>
  19. </build>

CRUD

  • UserMapper.xml
  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. <mapper namespace="com.dao.UserMapper">
  6. <select id="getUserList" resultType="com.pojo.User">
  7. select *
  8. from db4.user
  9. </select>
  10. <select id="getUserById" parameterType="int" resultType="com.pojo.User">
  11. select *
  12. from db4.user
  13. where id = #{id}
  14. </select>
  15. <select id="addUser" parameterType="com.pojo.User">
  16. insert into db4.user (id, username, password)
  17. values (#{id}, #{username}, #{password})
  18. </select>
  19. <select id="updateUser" parameterType="com.pojo.User">
  20. update db4.user
  21. set username = #{username},
  22. password = #{password}
  23. where id = #{id};
  24. </select>
  25. <select id="deleteUser" parameterType="int">
  26. delete
  27. from db4.user
  28. where id = #{id}
  29. </select>
  30. </mapper>
  • UserMapper.java
  1. public interface UserMapper {
  2. List<User> getUserList();
  3. User getUserById(int id);
  4. void addUser(User user);
  5. void updateUser(User user);
  6. void deleteUser(int id);
  7. }
  • test.java
  1. public class test {
  2. @Test
  3. public void getUserList_test(){
  4. SqlSession sqlSession = MybatisUtils.getSqlSession();
  5. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  6. List<User> userList = userMapper.getUserList();
  7. for (User user : userList) {
  8. System.out.println(user);
  9. }
  10. sqlSession.close();
  11. }
  12. @Test
  13. public void getUserById_test(){
  14. SqlSession sqlSession = MybatisUtils.getSqlSession();
  15. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  16. User user = userMapper.getUserById(1);
  17. System.out.println(user);
  18. sqlSession.close();
  19. }
  20. @Test
  21. public void addUser_test(){
  22. SqlSession sqlSession = MybatisUtils.getSqlSession();
  23. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  24. userMapper.addUser(new User(66,"zhang", "7777"));
  25. sqlSession.commit();
  26. sqlSession.close();
  27. }
  28. @Test
  29. public void updateUser_test(){
  30. SqlSession sqlSession = MybatisUtils.getSqlSession();
  31. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  32. userMapper.updateUser(new User(2,"oooo", "000000"));
  33. sqlSession.commit();
  34. sqlSession.close();
  35. }
  36. @Test
  37. public void deleteUser_test(){
  38. SqlSession sqlSession = MybatisUtils.getSqlSession();
  39. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  40. userMapper.deleteUser(10);
  41. sqlSession.commit();
  42. sqlSession.close();
  43. }
  44. }

万能的Map查询

  • Map被用为构造器
  1. User getUserByMapId(Map map);
  1. <select id="getUserByMapId" parameterType="map" resultType="com.pojo.User">
  2. select *
  3. from db4.user
  4. where id = #{mapId}
  5. </select>
  1. @Test
  2. public void getUserByMapId_test() {
  3. SqlSession sqlSession = MybatisUtils.getSqlSession();
  4. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  5. Map<String, Object> map = new HashMap<>();
  6. map.put("mapId", 1);
  7. User user = userMapper.getUserByMapId(map);
  8. System.out.println(user);
  9. sqlSession.commit();
  10. sqlSession.close();
  11. }

模糊查询怎么写

  • java执行代码的时候,使用通配符% %
  1. List<User> userlist = mapper.getUserLike("%张%");
  • 在sql拼接中使用通配符!
  1. select * from db4.user where name like "%"#{value}"%"

mybatis入门,CRUD,万能Map,模糊查询的更多相关文章

  1. 4.万能的Map+模糊查询

    万能的Map 当数据或者属性很多的时候,可以选择性的单独改变密码或者用户名等等 UserMapper.java int updateUserByMap(Map<String,Object> ...

  2. 使用mybatis从mysql里进行模糊查询的编码问题

    关于这个问题,记录下我的解决方法,希望对有同样困惑的朋友,有所帮助. 问题描述: 我在做mybatis从mysql里模糊查询时,如果模糊的关键词是字母的话,可以查出来.如果模糊的关键词是汉字的话,查不 ...

  3. mybatis 特殊符号转义和模糊查询和批量插入

    1 xml文件特殊符号转义 <          < >          > <>   <> &      & &apos; ...

  4. 【MyBatis】多关键字的模糊查询

    目录 情景分析 题目 要求 相关代码 Mapper.java Impl.java mapper.xml test.java 思路分析 1.最开始,参数没有使用List,引起的问题 2.Mybatis的 ...

  5. mybatis中使用mysql的模糊查询字符串拼接(like)

    方法一: <!-- 根据hid,hanme,grade,模糊查询医院信息--> 方法一: List<Hospital> getHospitalLike(@Param(" ...

  6. MyBatis的手动映射与模糊查询

    一.手动映射 当实体类属性与数据库字段名不同时,无法自动映射,导致查询出空值,这时候可以使用手动映射 在select节点添加resultMap属性与resultMap节点建立关系

  7. 关于mybatis中sql映射文件模糊查询的使用

    1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...

  8. mybatis 实现分页和过滤模糊查询

    基于 mybatis 的分页和过滤查询 学习内容: 分页设计 1.分页需传递的参数 2.分页需展示的数据 3.分页需展示的数据的来源 3.1.结果总数与结果集(分页原理) 3.2.总页数.上一页和下一 ...

  9. mybatis xml 文件中like模糊查询

    1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. 2.CONCAT()函数 My ...

  10. mybatis的动态sql及模糊查询

    1.动态sql 使用类似于jstl表达式来实现 2.模糊查找 用一个对象来封装条件 步骤: 1)新建一个条件实体 package com.hy.mybatis.entity; public class ...

随机推荐

  1. 如何在 spring 中启动注解装配?

    默认情况下,Spring 容器中未打开注解装配.因此,要使用基于注解装配,我们 必须通过配置 <context:annotation-config/> 元素在 Spring 配置文件 中启 ...

  2. django-debug-toolbar 开发利器的使用教程

    django-debug-toolbar介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. 下载安装 ...

  3. ES6技术之“判空方案”

    一.常用方案 直接判断 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  4. 深入Linux 内核架构之 CFS

    linux内核分析--CFS(完全公平调度算法)   1.1 CFS原理 cfs定义了一种新的模型,它给cfs_rq(cfs的run queue)中的每一个进程安排一个虚拟时钟,vruntime.如果 ...

  5. 面试BAT,你凭什么说你掌握了CSS

    介绍 项目已经开源:https://github.com/nanhupatar... 欢迎PR 推荐 关注我们的公众号 display: none; 与 visibility: hidden; 的区别 ...

  6. HTML5+CSS3兼容收藏夹

    CSS3选择器兼容IE6~8: Selectivizr 使用方法: <!--[if (gte IE 6)&(lte IE 8)]> <script src="htt ...

  7. H5本地存储:sessionStorage和localStorage

    作者:心叶时间:2018-05-01 18:30 H5提供了二种非常好用的本地存储方法:sessionStorage和localStorage,下面分别介绍一下: 1.sessionStorage:保 ...

  8. 老版本的Spring应用该如何应对CVE-2022-22965漏洞?

    昨天,在发布了<Spring官宣承认网传大漏洞,并提供解决方案>之后.群里就有几个小伙伴问了这样的问题:我们的Spring版本比较老,该怎么办?这是一个好问题,所以DD今天单独拿出来说说. ...

  9. 【uniapp 开发】字典工具类 ObjectUtil

    {__/} ( • - •) /つ寿司 你要不要? {__/} ( • - •) /つ草莓 你要不要? {__/} ( • - •) /つ披萨 你要不要? {__/} ( • - •) /つ桃子 你要 ...

  10. 【Android开发】LogcatView,手机中查看logcat神器

    先上图 集成: 1, allprojects { repositories { ... maven { url 'https://www.jitpack.io' } } } 2, dependenci ...