1.mybatis入门
1.1mybatis下载
mybaits的代码由github.com管理 mybatis包下载地址,大家可以下载对应的版本
我下载的mybatis-3.4.1,其目录结构为
.pdf文件是官方文档
1.2开发需求
现在我们明确需求,即实现以下功能:
1.3创建数据库、表
创建一个user表
MysqL> create table user
-> (
-> id INT(11) PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(30),
-> sex CHAR(1),
-> email VARCHAR(50)
-> );
插入一条数据
MysqL> INSERT INTO user VALUES (NULL, '朱志成', 1, 'zzc431790965@qq.com');
1.4MyBatis入门程序配置
1.4.1创建工程
使用Eclipse创建一个普通的Java工程
1.4.2创建一个JavaBean
创建一个bean类——User.java。我们可在src目录下新建一个名为com.zzc.bean的包,并在该包下创建一个bean类——User.java
beam类作为mybatis进行sql映射使用,bean类(属性要与数据库字段一样)通常与数据库表对应,User.java文件的内容如下:
package com.zzc.bean;
public class User {
private Integer id;
private String name;
private Integer sex;
private String email;
public User() {
}
public User(Integer id, String name, Integer sex, String email) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.email = email;
}
//setter/getter()方法
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", email=" + email + "]";
}
}
1.4.3导包
加入jar包。工程所需加入的jar包有mybatis核心包和MysqL数据驱动包
其实只需要这两个包就可以了,但我们要在控制台打印mybatis的sql语句和其他的东西,于是添加了日志包
1.4.4添加日志文件
可以查看官方文档,打开之前下载的.pdf文档
在classpath下创建日志记录文件——log4j.properties。我们可在此工程下新建一个config源码包,并在该源码包下创建一个日志记录文件——log4j.properties
log4j.properties 配置文件内容:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
1.4.5把jar包进行build path
一下子选中三个包(选中第一个包,按住shift键,再点击最后一个包)后,右键 – build path – add to build path
build path 成功后
1.4.6创建mybatis核心配置文件(全局配置文件)
作用:构建sqlSessionFactory
在classpath下创建mybatis-config.xml文件。我们同样可在config源码包下创建该文件
其内容为(可按照官网进行复制,并做适当修改):
<?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>
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.MysqL.jdbc.Driver"/>
<property name="url" value="jdbc:MysqL://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- <mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers> -->
</configuration>
上面的mapper标签里面映射的xml文件暂时还没有,先注释掉,等会在创建
mybatis-config.xml 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器
1.4.7创建sql映射文件
在classpath目录下创建sql映射文件UserMapper.xml (任意命名)
UserMapper.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">
1.4.8加载sql映射文件UserMapper.xml
mybatis框架需要加载映射文件,将UserMapper.xml添加在mybaits-config.xml中
resource是基于classpath来查找的
所以在mybatis-config.xml文件中添加以下配置信息
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
1.5mybatis入门程序测试
1.5.1根据id查询用户信息
<mapper namespace="com.zzc.mapper.UserMapper">
<select id="selectUser" parameterType="int" resultType="com.zzc.bean.User">
SELECT *
FROM user
WHERE id = #{id}
</select>
</mapper>
namespace:名称空间
id:唯一标识
parameterType:输入参数类型
resultType:输出结果类型,如果是pojo则应该给出全路径。
#{}:表示使用PreparedStatement设置占位符号并将输入变量id传到sql中。说白点,#{}作用就是占位符,相当于JDBC中的"?"。
接着在src目录下新建一个名为com.zzc.test的包,并在该包下创建一个MybatisTest单元测试类,紧接着在该类中编写如下一个但单元测试方法:
public class MybatisTest {
@Test
void getUserById() throws IOException {
// 1.根据xml配置文件(全局配置文件)构建一个sqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsstream(resource);
sqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
// 2.获取session实例,能直接执行已经映射的sql语句
sqlSession openSession = sqlSessionFactory.openSession();
// 3.参数1:sql唯一标识--》名称空间+id;参数2:执行sql要用的参数
User user = openSession.selectOne("com.zzc.mapper.UserMapper.selectUser", 1);
System.out.println(user);
openSession.close();
}
}
一般来讲工厂对象一般在实际开发是单例的,并不需要频繁地创建,故getUserById()方法可优化为:
public class MybatisTest {
// 1.单例
private sqlSessionFactory sqlSessionFactory = null;
@BeforeEach
public void init() throws IOException {
String resource = "mybatis-config.xml";
// 2.根据xml配置文件(全局配置文件)构建一个sqlSessionFactory
InputStream inputStream = Resources.getResourceAsstream(resource);
// 3.创建sqlSessionFactory对象
sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
}
@Test
void getUserById() {
// 4.获取session实例,能直接执行已经映射的sql语句
sqlSession openSession = sqlSessionFactory.openSession();
// 5.参数1:sql唯一标识;参数2:执行sql要用的参数
User user = openSession.selectOne("com.zzc.mapper.UserMapper.selectUser", 1);
System.out.println(user);
openSession.close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。