Mybatis的入门01
发布日期:2021-05-08 03:02:07 浏览次数:8 分类:精选文章

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

1.Mybatis 介绍

Mybatis是支持普通sql查询,存储过程和高级映射的持久层框架。它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低。

JDBC->dbutils->MyBatis->Hibernate

Hibernate为全自动框架

2. mybatis 快速入门

第一:添加jar包

mysql,mybatis,lombok

注意:lombok:(必须安装idea的lombok插件,可以生成实体类的get、set、有参、无参构造)

mysql
mysql-connector-java
5.1.40
org.mybatis
mybatis
3.5.6
org.projectlombok
lombok
1.18.18

第二:创建数据库以及表

便于mybatis-config.xml的配置

第三:添加Mybatis的配置文件mybatis-config.xml

第四:定义表所对应的实体类

//以下注解是Lombok中的注解@Data  (包括get、set、toString)@AllArgsConstructor@NoArgsConstructorpublic class User {    private int id;    private String username;    private String password;}

第五:定义操作user表的CURD(增删改查)操作

sql映射文件UserMapper.xml

注意:

resultType: 查询语句执行完后 返回的数据类型,int 类型可以省略,其他类型不能不写。

parameterType:表示传来参数的类型,该属性可以不要加

namespace:命名空间,给当前存放mybatis的容器起一个唯一的名字,必须和接口的全路径匹配

select:表示查询标签:该标签内可以放置查询的sql语句

id:唯一标志,名字必须要跟接口名字一样;

 

insert into user(username,password) values (#{param1},#{param2})
update user set username=#{username},password=#{password} where id=#{id}
delete from user where id=#{id}

第六:在 conf.xml 文件中注册 userMapper.xml 文件

注意:

  • mappers这个标签要放到<configuration></configuration>里面
  • resource="mapper路径" 例如:resource="mapper\UserMapper.xml"

第七:编写测试代码:

注意:JDBC事务管理默认开启事务,增删改在执行完操作,需要提交事务 例如:session.commit();

普通的增删改查

例如:haha.selectById

haha:namespace=" haha",mapper.xml命名空间的名字

selectById: id="selectById"

  1. 查询

注意:selectOne 表示只查询一个

selectList() 表示查询为list集合类型.

 

public static void main(String[] args) throws Exception {//        查询//加载 mybatis 的配置文件(它也加载关联的映射文件)        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//构建 sqlSession 的工厂        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//创建能执行映射文件中 sql 的 sqlSession        SqlSession session = sessionFactory.openSession();//        执行sql   haha:命名空间的名字        User user = session.selectOne("haha.selectById", 2);        System.out.println(user);    }

2、添加

insert表示添加的方法

 

 

//    添加    @Test    public void insert() throws Exception {//        1.读取mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//        2.读取sqlSessionFaction        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//        3.获取sqlSession对象        SqlSession session = sessionFactory.openSession();//        4.执行sql        int insert = session.insert("haha.insertUser", new User("峥峥", "111"));//        增删改需要提交事务        session.commit();        System.out.println(insert);    }

3、修改

update表示修改的方法

 

//修改    @Test    public void update() throws Exception {//添加mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//      获取sqlSessionFactory        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//        读取sqlSession对象        SqlSession session = sessionFactory.openSession();        int update = session.update("haha.updateUser", new User(3, "李四", "333"));//执行sql        session.commit();        System.out.println(update);    }

4、删除

delete表示删除的方法

 

//    删除    @Test    public void delete() throws Exception{//      1.  添加mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//    2 获取·sqlSessionFactory        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//        3 读取sqlSession对象 执行sql语句        SqlSession session = sessionFactory.openSession();//        4.执行sql        int delete = session.delete("haha.deleteUser", 2);//        5 提交事务        session.commit();        System.out.println(delete);    }

实际开发中的操作:

注:实际开发中接口要结合映射文件一起用

1、创建的接口userDao

 

public interface UserDao {    /**     * 查询所有的用户信息     * @return返回所有的用户信息     */    List
selectAll();/** * 添加用户信息 */ int insertUser(String username,String password); /** * 修改用户信息 */ int updateUser(User user); /** * 删除用户信息 */ int deleteUser(int id);}

2、创建映射的文件

 

insert into user(username,password) values (#{param1},#{param2})
update user set username=#{username},password=#{password} where id=#{id}
delete from user where id=#{id}

3、实际开发中的增删改操作

  • 执行定义的 select 语句
/**     * 查询全部     * @throws Exception     */    @Test    public void select()throws Exception{//        先读取mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//        获取sqlSessionFactory        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//        读取sqlSession对象        SqlSession session = sessionFactory.openSession();//      得到对应接口的实现类        UserDao mapper = session.getMapper(UserDao.class);        List
users = mapper.selectAll();// 提交事务 session.commit(); System.out.println(users); }
  • 执行定义的 insert语句

 

//    添加用户    public static void main(String[] args) throws Exception{//        1.先获取mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//    2.获取sqlSessionFactory        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//        3 读取sqlSession对象 执行sql语句        SqlSession session = sessionFactory.openSession();//        4.执行sql        UserDao userDao = session.getMapper(UserDao.class);//获得对应接口的实现类        int i = userDao.insertUser("峥11", "11111");        session.commit();        System.out.println(i);    }
  • 执行定义的 update语句
/**     * 修改     * @throws Exception     */    @Test    public void update() throws Exception{//        先读取mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//        获取sqlsessionFactory        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//        读取sqlSessiom对象        SqlSession session = sessionFactory.openSession();//        得到对应的实现类        UserDao userDao = session.getMapper(UserDao.class);        int i = userDao.updateUser(new User(4, "哈哈哈", "222"));//        提交事务        session.commit();        System.out.println(i);    }
  • 执行定义的 delete语句
/**     * 删除     * @throws Exception     */    @Test    public void delete() throws Exception{//        读取mybatis-config.xml        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//        获取sqlSessionFaction        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//       获取到sqlSession对象        SqlSession session = sessionFactory.openSession();//        获取到接口对应的实现类        UserDao mapper = session.getMapper(UserDao.class);        int i = mapper.deleteUser(5);        session.commit();        System.out.println(i);    }

注意事项

mapper.xml映射中传到dao层可能出现不匹配的现象

第一种:

UserDao中加入@param表示把该参数的名称作为映射文件的参数名

UserMapper.xml中: mapper.xml映射中

 

第二种:

UserMapper.xml中: mapper.xml映射中

UserDao中 dao层

 

 

 

 

上一篇:《镜像夜-分布式存储的一小步》酒会完美落幕
下一篇:镜像网络MW正式成为SNIA(全球网络存储工业协会)组织成员

发表评论

最新留言

不错!
[***.144.177.141]2025年04月10日 17时14分41秒