版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lu__peng/article/details/79084552
写在前面
利用maven创建的Mybatis;
数据库名字为mybatis;
数据表为users,表的结构如图所示;
创建Mybatis实例
1.配置Mybatis所以需要的架包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency>
2.创建用具连接数据库的properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root
3 创建Mybatis配置文件conf.xml,连接数据库
<!--引用properties文件中的配置数据 -->
<properties resource="mysql-connection.properties" />
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}" ></property>
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 指定映射文件的位置(里面定义的时SQL语句)-->
<mappers>
<mapper resource="data/mapping/Users.xml"/>
</mappers>
4.创建Mybatis映射文件Users.xml,在改文件中我们定义自己所需要的SQL语句
<mapper namespace="data.mapping.Users.i1">
<!-- 预定义SQL语句,并且指定返回类型Users,参数类型int-->
<select id="getUser" parameterType="int" resultType="com.inf.user.Users">
select * from users where id=#{id};
</select>
</mapper>
需要注意的时,在预定义的SQL语句中使用参数的方式为#{id}
另外一个比较重要的时:namespace,在之前的Mybatis版本中(具体是哪个之前,我没有细查)namespace是不必须的,但是3.1.1中namespace是必须的,官方文档上是这么解释的:
“命名空间使得你所见到的接口绑定成为可能,尽管你觉得这些东西未必用得上,你还是应该遵循这里的规定以防哪天你改变了主意。出于长远考虑,使用命名空间,并将它置于合适的 Java 包命名空间之下,你将拥有一份更加整洁的代码并提高了 MyBatis 的可用性。”
5.测试
经过以上四步,Mybatis应用实例就算是配置好了,现在是测试一下,测试代码如下:
String resource = "conf.xml";
InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sqlSessionFactory.openSession();
String statement = "data.mapping.Users.i1.getUser";
Users users = session.selectOne(statement,5);
System.out.println(users.getName()+","+users.getAge());
session.close();
结果如图所示: