首页 > 代码库 > MyBatis复习
MyBatis复习
一、helloworld
首先MyBatis的核心是SqlSessionFactory,MyBatis的一切操作都是基于SqlSessionFactory的,于是我的第一个目标就是创建SqlSessionFactory
SqlSessionFactory通过SqlSessionFactoryBuilder构建
SqlSessionFactoryBuilder有两种方式构建SqlSessionFactory
①、通过XML配置文件
a.配置文件好放在类路径下。
b.配置文件包含了MyBatis系统的核心设置,包括获取数据库连接实例的数据源、事务管理器以及事务的范围。
流程:
1、创建java project。
2、导入jar包(主要是MyBatis核心包mybatis-3.2.3.jar 还有 mysql驱动)
3、类路径下创建conf.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> <!-- 配置环境信息,default表示当前使用的环境 --> <environments default="development"> <!-- 配置环境信息,id是唯一标识 这里只是配置了核心信息 environment元素体中包含对事务管理和连接池的环境配置 --> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql:///mybatis" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <!-- 暂时没配置 mappers 元素是包含所有 mapper (映射器)的列表,这些 mapper的 XML 文件包含 SQL 代码和映射定义信息 --> <mappers> <!-- 映射文件的路径 --> <mapper resource="denzel/study/mybatis/model/userMapper.xml" /> </mappers> </configuration>
4、数据库建表(听说mybatis有个插件可以自己建表,但是还没发现先这个整吧)
CREATE TABLE users( id INT(10) NOT NULL AUTO_INCREMENT, username VARCHAR(6), nickname VARCHAR(6), age INT(3), PRIMARY KEY(id) ); INSERT INTO users VALUES(NULL,‘sunwukong‘,‘孙悟空‘,20);
5、创建于表对应的类
package denzel.study.mybatis.model; public class User { private int id; private String name; private String nickname; private int age; public User() { } public User(String name, String nickname, int age) { super(); this.name = name; this.nickname = nickname; this.age = age; } public User(int id, String name, String nickname, int age) { super(); this.id = id; this.name = name; this.nickname = nickname; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", nickname=" + nickname + ", age=" + age + "]"; } }
6、创建类的映射文件和实体类放在一个包下边
<?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"> <!-- namespace只是作为一个唯一标识,但是习惯与这种写法,后边解释 --> <mapper namespace="denzel.study.mybatis.model.UserMapper"> <!-- parameterType 参数类型,resultTyoe 返回值类型,select标签中写的是sql语句 和jdbc相同只不过占位符换成#{id} --> <select id="getUserById" parameterType="int" resultType="denzel.study.mybatis.model.User"> select * from users where id = #{id} </select> </mapper>
7、编写测试类
package denzel.study.mybatis.test; import java.io.IOException; 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; import org.junit.Test; import denzel.study.mybatis.model.User; public class TestMyBatisHelloWorld { @Test public void testSelect() throws IOException { //配置文件名字 String resource = "conf.xml"; //通过名字获得Reader对象 Reader reader = Resources.getResourceAsReader(resource); //通过Reader构建SqlSessionFactory SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //获得session SqlSession session = sessionFactory.openSession(); try{ //selectOne 查询数据 第一个参数 是调用的方法名 映射文件的 namespace+方法的id,第二个参数为 查询条件 User user = session.selectOne("denzel.study.mybatis.model.UserMapper.getUserById", 1); //输出结果 User [id=1, name=null, nickname=孙悟空, age=20] System.out.println(user); }finally{ session.close(); } } }
ok这就是一个最简单的helloworld
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。