MyBatis学习笔记
1.MyBatis介绍
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
2.MyBatis快速入门
(1)所需主要jar包(可忽略版本)
mybatis-3.3.0.jar -- MyBatis
mysql-connector-java-5.1.7-bin.jar -- mysql驱动
(2)搭建测试工程,例如
(3)MyBatis配置文件说明
mybatiseConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 注册实体类 --> <typeAliases> <typeAlias alias="UserInfo" type="com.demo.model.UserInfo"/> </typeAliases> <!-- 数据库配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息(个人配置信息) --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/demo" /> <property name="username" value="root" /> <property name="password" value="ymb@123" /> </dataSource> </environment> </environments> <!-- 注册sql映射文件 --> <mappers> <mapper resource="com/demo/dao/mapper/UserInfo.xml"/> </mappers> </configuration>
(4)sql映射文件配置说明
UserInfo.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.demo.dao.UserMapper"> <!-- 根据id获取用户信息 --> <select id="selectUserInfo" parameterType="int" resultType="UserInfo"> SELECT id AS id, name AS userName, pass_word AS passWord, email AS email FROM tbl_demo_user_info WHERE id = #{id} </select> <!-- 获取所有用户信息 --> <select id="selectUserInfoList" resultType="UserInfo"> SELECT id AS id, name AS userName, pass_word AS passWord, email AS email FROM tbl_demo_user_info </select> </mapper>
(5)实体类
UserInfo.java
package com.demo.model; import lombok.Data; /** * 用户信息实体类 * * @author Super Yu * @version 2017.03.22 */ @Data public class UserInfo { private int id; private String userName; private String passWord; private String email; // @Override // public String toString() { // return "UserInfo [id=" + id + ", userName=" + userName + ", passWord=" + passWord + ", email=" + email + "]"; // } }
(6)测试类
TestTestMyBatis.java
package com.demo.test; import java.io.IOException; import java.io.Reader; 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; import com.demo.model.UserInfo; public class TestMyBatis { public static void main(String[] args) { //mybatis配置文件路径 String resource = "conf/mybatiseConfig.xml"; Reader reader = null; SqlSession session; try { //加载mybatis配置文件 reader = Resources.getResourceAsReader(resource); } catch (IOException e) { e.printStackTrace(); } //构建sqlSession的工厂 SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中sql的sqlSession session = sqlMapper.openSession(); //按条件查询 UserInfo userInfo = session.selectOne("selectUserInfo", 1); //查询所有 List<UserInfo> userInfoList = session.selectList("selectUserInfoList"); System.out.println(userInfo.toString()); System.out.println(userInfoList.toString()); } }
(7)结果输出
UserInfo(id=1, userName=蔚, passWord=123456, email=yy@163.com)
[UserInfo(id=1, userName=蔚, passWord=123456, email=yy@163.com), UserInfo(id=2, userName=yu1, passWord=123, email=123@.com), UserInfo(id=3, userName=yu2, passWord=123456, email=yy@163.com)]
(8)数据库