博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一看就懂的Mybatis框架入门笔记
阅读量:7121 次
发布时间:2019-06-28

本文共 9055 字,大约阅读时间需要 30 分钟。

  • 本篇为初学Mybatis框架时的入门笔记,整理发出
  • Spring集成Mybatis
  • SpringBoot集成Mybatis

简介

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,其几乎消除了所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis 应用程序大都使用 SqlSessionFactory 实例,SqlSessionFactory 实例可以通过 SqlSessionFactoryBuilder 获得,而 SqlSessionFactoryBuilder 则可以从一个 XML 配置文件或者一个预定义的配置类的实例获得。

依赖

mybatis-3.2.2.jar 核心jar

mysql-connector-java-5.1.10-bin.jar 数据库访问

1.Configuration配置

在resources下,新建Configuration.xml

2.Entity实体类

示例:

package com.zyzpp.model;public class User {    private int id;    private String userName;    private int userAge;    private String userAddress;    private List
cards; ....}

3.Dao层接口

示例:

package com.zyzpp.inter;public interface IUserOperation {    public User selectUserByID(int id);    public List
selectUsers(String userName); public void addUser(User user); public void updateUser(User user); public void deleteUser(int id); public List
getUserArticles(@Param("userid") int userid); //多个参数要加注释区分 public User getUserCards(int id); public int getCount(User user); public List
getLimit(Map map);}

4.Mapper配置

说白了,就是实现上步接口方法

insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress})
update user set userName = #{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
delete from user where id=#{id}

5.开始使用

import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class Test {    private static SqlSessionFactory sqlSessionFactory;    private static Reader reader;    private static String resource = "Configuration.xml";    //mybatis的配置文件    static{        try{            /*使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)*/            reader=Resources.getResourceAsReader(resource);             sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);//构建sqlSession的工厂        }catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Test test =new Test();        User user=new User();        test.getLimit();//      test.getCount(user);//  test.getUserCards(1);//  test.getUserArticles(1);//      test.getUserList("%");//      test.addUser();//      test.updateUser(1, "这是更新后的地址");//      test.deleteUser(3);    }    /*     * 以ID查找单个数据     */    public void getUserByID(int id){        SqlSession session=sqlSessionFactory.openSession();        try{        IUserOperation userOperation=session.getMapper(IUserOperation.class);        User user=userOperation.selectUserByID(id);        System.out.println("查询ID:"+id+"结果如下\n"+"名字:"+user.getUserName()+" 年龄:"+user.getUserAge()+" 地址:"+user.getUserAddress());        }finally {            session.close();        }    }    /*     * 以name查找符合的List列表     */    public void getUserList(String userName){        SqlSession session=sqlSessionFactory.openSession();        try{            IUserOperation userOperation=session.getMapper(IUserOperation.class);            List
users = userOperation.selectUsers(userName); System.out.println("查询结果如下:"); for(User user: users){ System.out.println(user.toString()); } }finally { session.close(); } } /* * 增加一个用户 */ public void addUser(){ User user = new User(); user.setUserAddress("人民广场"); user.setUserAge(18); user.setUserName("飞鸟"); SqlSession session = sqlSessionFactory.openSession(); try{ IUserOperation userOperation =session .getMapper(IUserOperation.class); userOperation.addUser(user); session.commit(); System.out.println("当前增加的用户ID:"+user.getId()); }finally { session.close(); } } /* * 更新数据 */ public void updateUser(int id,String content){ //先得到用户,然后修改提交 SqlSession session = sqlSessionFactory.openSession(); try{ IUserOperation userOperation = session.getMapper(IUserOperation.class); User user = userOperation.selectUserByID(id); user.setUserAddress(content); userOperation.updateUser(user); session.commit(); System.out.println("更新ID:"+id+"成功!"); }finally { session.close(); } } /* * 删除数据 */ public void deleteUser(int id){ SqlSession session = sqlSessionFactory.openSession(); try{ IUserOperation userOperation = session.getMapper(IUserOperation.class); userOperation.deleteUser(id); session.commit(); System.out.println("删除ID:"+id+"成功!"); }finally { session.close(); } } /* * 多对一 */ public void getUserArticles(int userid){ SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation=session.getMapper(IUserOperation.class); List
articles = userOperation.getUserArticles(userid); for(Article article:articles){ System.out.println("标题:"+article.getTitle()+":内容:"+article.getContent()+ ":作者是:"+article.getUser().getUserName()+":地址:"+ article.getUser().getUserAddress()); } } finally { session.close(); } } /* * 一对多 */ private void getUserCards(int userid) { SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session.getMapper(IUserOperation.class); User user = userOperation.getUserCards(userid); System.out.println(user.toString()); for (Card card : user.getCards()) { System.out.println(card.toString()); } } finally { session.close(); } } /* * 按条件查询总条数 */ private int getCount(User user){ SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session.getMapper(IUserOperation.class); int i = userOperation.getCount(user); System.out.println("总条数:"+i); return i; } finally { session.close(); } } /** * 按条件查询List记录 */ private void getLimit(){ SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session.getMapper(IUserOperation.class); Map
map=new HashMap
(); Page page=new Page(); page.setDbIndex(0); page.setDbNumber(1); User user=new User(); user.setId(1); map.put("page", page); map.put("user", user); List
users = userOperation.getLimit(map); System.out.println("查询结果如下:"); for(User use: users){ System.out.println(use.toString()); } } finally { session.close(); } }}

转载地址:http://wbsel.baihongyu.com/

你可能感兴趣的文章
洛谷 P3049园林绿化 题解
查看>>
eclipse New菜单项的显示问题
查看>>
python3常用内置函数总结
查看>>
二分法在生活中的一次应用
查看>>
iOS7新特性的兼容性处理方法 之三
查看>>
转载:Python正则表达式
查看>>
UVA10140 Prime Distance
查看>>
.NET深入 c#数据类型2
查看>>
DIV+CSS颜色边框背景等样式
查看>>
HDU 1018 Big Number【斯特林公式/log10 / N!】
查看>>
nefu 115
查看>>
drf版本控制 和django缓存,跨域问题,
查看>>
SVN环境搭建详解(来源网络)
查看>>
设备驱动基础学习--字符驱动实现
查看>>
sourceinsight安装记录
查看>>
PHP函数索引-F
查看>>
数组[]
查看>>
C++学习之基本概念
查看>>
el captain设置环境变量
查看>>
Educational Codeforces Round 37 A B C
查看>>