如今的持久化框架中,Hibernate和mybatis可以说是各自占据了半壁江山,所以我们不能单独只了解Hibernate,还得学习mybatis,今天就首先来入门mybatis
要使用mybatis只需下载mybatis然后将mybatis-3.0.4.jar导入到工程中,要使用mybatis就必须先了解他的配置文件,在这里我们来看看mybatis的核心配置文件,名字可以随意命名,configuration,xml
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 指定properties配置文件, 我这里面配置的是数据库相关 --> <!-- 指定Mybatis使用log4j --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 如果上面没有指定数据库配置的properties文件,那么此处可以这样直接配置 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/express_door"/> <property name="username" value="root"/> <property name="password" value="root"/> <!-- 上面指定了数据库配置文件, 配置文件里面也是对应的这四个属性 --> <!-- <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> --> </dataSource> </environment> </environments> <!-- 映射文件,mybatis精髓, 后面才会细讲 --> <mappers> <mapper resource="main/java/conf/userDao-mapping.xml"/> </mappers> </configuration>
在这里我们定义它的environments,在这个节点里面我们可以配置多个environment,这个使用多个环境的时候就可以用到,随后就是定义他的dataSource,就是一般的驱动,数据库,用户名和密码,配置完之后,我们还需要配置映射文件,如我们这里有个userDao-mapping.xml
接着就是这个userDao-mapping.xml
内容如下:
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="main.java.com.mybatis.UserDao"> <select id="findUserById" resultType="main.java.com.mybatis.User" > select * from user_t where id = #{id} </select> </mapper>
可以看到,首先配置了mapper,虽然现在不知道是什么鬼,但是可以看到就是一个执行数据库操作的一个接口,然后可以看到定义了一个查询 resultType是一个实体类
在这里需要注意的是这个查询的id需要和接口中的方法名一致,还有这样配置的缺点是数据库列名必须和实体名保持一致,要想自定义的话我们可以在上面定义一个resultMap
这样配置文件就变成了如下:
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="main.java.com.mybatis.UserDao"> <resultMap id ="userMap" type="main.java.com.mybatis.User"> <result column="id" property ="id"/> <result column="user_name" property ="userName"/> <result column="user_type" property ="userType"/> </resultMap> <select id="findUserById" resultMap="userMap" > select * from user_t where id = #{id} </select> </mapper>
我们的实体类为:
package main.java.com.mybatis; public class User { private int id ; private String userName ; private String userType ; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserType() { return userType; } public void setUserType(String userType) { this.userType = userType; } @Override public String toString() { return "User [id=" + id + ", userName=" + userName + ", userType=" + userType + "]"; } }
定义好了配置文件,我们就需要来写一个数据库执行类,UserDao
package main.java.com.mybatis; import java.util.List; public interface UserDao { public void insert(User user); public User findUserById(int userId); public List<User> findAllUsers(); }
可以看到这就是一个接口,然后定义了一些方法。
最后来测试一下吧
package main.java; import java.io.IOException; 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 main.java.com.mybatis.User; import main.java.com.mybatis.UserDao; import main.java.com.mybatis.UserDaoImp; public class Main { public static void main(String[] args) { SqlSession sqlSession = getSessionFactory().openSession(); UserDao userMapper = sqlSession.getMapper(UserDao.class); User user = userMapper.findUserById(2); System.out.println(user); } private static SqlSessionFactory getSessionFactory() { SqlSessionFactory sessionFactory = null; String resource = "main/java/conf/configuration.xml"; try { sessionFactory = new SqlSessionFactoryBuilder().build(Resources .getResourceAsReader(resource)); } catch (IOException e) { e.printStackTrace(); } return sessionFactory; } }
输出为:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/JettyProject/SpringStudyPro/WebContent/WEB-INF/lib/activemq-all-5.14.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/JettyProject/SpringStudyPro/WebContent/WEB-INF/lib/slf4j-jdk14-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
User [id=2, userName=dss, userType=dsa]
这就是一个简单的mybatis的实用例子,很简单吧
下面贴出使用mybatis实现增删改查的例子:
先贴出mapping配置文件:
userDao-mapping.xml
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="main.java.com.mybatis.UserDao"> <resultMap id ="userMap" type="main.java.com.mybatis.User"> <result column="id" property ="id"/> <result column="user_name" property ="userName"/> <result column="user_type" property ="userType"/> </resultMap> <select id="findUserById" parameterType="java.lang.Integer" resultMap="userMap" > select * from user_t where id = #{id} </select> <select id="findUserByName" parameterType="java.lang.String" resultMap="userMap" > select * from user_t where user_name like '%${value}%' </select> <insert id="insertUser" parameterType="java.lang.String"> insert into user_t(user_name , user_type) values (#{userName} , #{userType}) </insert> <delete id="deleteUserById" parameterType="int"> delete from user_t where id=#{id} </delete> <update id="updateUser" parameterType="main.java.com.mybatis.User"> update user_t set user_name=#{userName},user_type=#{userType} where id=#{id} </update> <insert id="insertBatch" parameterType="java.util.List"> insert user_t(user_name , user_type) values <foreach collection="list" item="obj" index="index" separator="," > (#{userName} , #{userType}) </foreach> </insert> </mapper>
实现类:
userDaoImp
package main.java.com.mybatis; import java.io.IOException; import java.util.List; 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 UserDaoImp { public void updateUserById(){ User user = findUserById(3); user.setUserName("updateDengwei"); SqlSession sqlSession = getSessionFactory().openSession(); sqlSession.update("updateUser", user); sqlSession.commit(); } public void deleteUserById(int id){ SqlSession sqlSession = getSessionFactory().openSession() ; sqlSession.delete("deleteUserById", id); sqlSession.commit(); } public void insertUser(User user){ SqlSession sqlSession = getSessionFactory().openSession(); UserDao userMapper = sqlSession.getMapper(UserDao.class); sqlSession.insert("insertUser", user); sqlSession.commit(); System.out.println("OK"); } public User findUserById(int userId) { SqlSession sqlSession = getSessionFactory().openSession(); UserDao userMapper = sqlSession.getMapper(UserDao.class); User user = userMapper.findUserById(userId); System.out.println(user); return user; } public List<User> findUserByName(String name){ SqlSession session = getSessionFactory().openSession() ; UserDao userMappper = session.getMapper(UserDao.class); List<User> list = userMappper.findUserByName(name); return list ; } public List<User> findAllUsers() { SqlSession sqlSession = getSessionFactory().openSession(); UserDao userMapper = sqlSession.getMapper(UserDao.class); List<User> users = userMapper.findAllUsers(); for(User user : users){ System.out.println(user); } return null; } private static SqlSessionFactory getSessionFactory() { SqlSessionFactory sessionFactory = null; String resource = "main/java/conf/configuration.xml"; try { sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource)); } catch (IOException e) { e.printStackTrace(); } return sessionFactory; } }
相关推荐
"MYBATIS学习资料文件"这一标题明确指出,这是一份与MyBatis相关的学习资源集合,可能包含教程、示例代码、笔记等,旨在帮助用户理解和掌握MyBatis这一流行的数据持久层框架。 【描述解读】 描述中提到“mybatis所...
【标题】"MyBatis学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...
Mybatis 是一款流行的Java持久层框架,它简化了数据库与Java应用之间的交互,提供了一种灵活的映射机制,使得开发者能够将SQL语句直接写在配置文件或者Mapper接口中,极大地提高了开发效率。本资源包含Mybatis的学习...
MyBatis个人学习记录,经过一周的学习,自己把MyBatis学习完了,下一步进入Spring的学习了
MyBatis是一款流行的Java持久层框架,它的设计理念是让程序员能够通过简单的配置和映射,将对象和数据库中的记录进行关联。MyBatis的主要特点是支持定制化SQL、存储过程以及高级映射,同时它减少了传统JDBC操作中...
MyBatis 是一款深受开发者喜爱的持久层框架,它允许开发者使用 SQL 语句来操作数据库,同时提供了强大的映射机制,将 SQL 与 Java 代码分离,简化了开发过程。这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的...
在MyBatis学习的过程中,需要注重实践,阅读示例代码,并且可以参考社区提供的示例和单元测试。若在文档阅读过程中发现错误或遗漏之处,应记录下来并反馈给社区,以帮助改进文档内容。同时,对于文档的翻译和校对,...
MyBatis 是一款优秀的...通过深入学习 MyBatis,你可以有效地将业务逻辑与数据访问层分离,提高代码的可维护性和可读性。同时,MyBatis 的灵活性和强大的功能使其成为 Java 开发者在处理 SQL 操作时的首选框架之一。
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作...
在这些MyBatis学习笔记中,我们可以期待涵盖以下几个关键知识点: 1. **MyBatis简介**:首先会介绍MyBatis的起源、目标和优点,例如简化数据库操作、提高开发效率、易于维护等。 2. **环境搭建**:包括如何下载...
标题 "mybatis学习入门一、mybatis+servlet实现数据显示" 提供了我们即将探讨的核心主题:MyBatis框架的学习入门,以及如何结合Servlet来展示数据。在这个过程中,我们将深入理解MyBatis的基本概念,它的作用,以及...
【MyBatis学习笔记六】——MyBatis一对一,一对多,多对一,多对多.zip博客地址:https://blog.csdn.net/weixin_43817709/article/details/117537580
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...
这份“MyBatis学习手册及配置文件”提供了全面的学习资源,帮助用户深入理解并掌握MyBatis的核心概念和实践技巧。 首先,`SqlMapConfig.xml`是MyBatis的全局配置文件,它是MyBatis启动时加载的第一个配置文件,用于...
这份笔记以清晰的条理和重点标注,为读者构建了一个系统的学习路径,不仅涵盖了Mybatis的基础知识,也包括了进阶技巧和实战经验。通过阅读和实践,初学者能够全面了解Mybatis,并在实际项目中灵活运用。同时,内置的...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis之前,我们先理解一下它的基本概念和核心特性。 1. **基本概念** - MyBatis消除了几乎所有的JDBC代码和手动设置...
本资源“MyBatis学习实例”旨在帮助你深入理解并掌握MyBatis的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...
MyBatis学习代码: mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in...