什么是MyBatis,能帮助我们JAVA开发什么?
在写这个配置教程前,大家也必须了解他,为了不占用这教程的开头部分,你们可以参考下面连接。
什么MyBatis框架?官方下载地址
今天写的应用是查询Blog数据库的数据。
应用到的工具是 eclipse mysql5.7 Navicat Premium
mybatis-3.4.4.zip mysql-connector-java-5.1.42-bin (附带下载连接)
下面正式开始了!
1.数据库建立
首先安装好mysql5.7,打开Navicat Premium连接mysql 建立我们需要的数据如下
然后添加一行数据
2.新建一个项目
点击 > File > New > Dynamic Web Project
这样我们Dynamic Web Project就建立好了。
3.添加支持库
添加/MyBatis/WebContent/WEB-INF/lib/mybatis-3.4.4.jar
/MyBatis/WebContent/WEB-INF/lib/mysql-connector-java-5.1.42-bin.jar
mybatis-3.4.4.zip mysql-connector-java-5.1.42-bin (附带下载连接)
解压获得如下的jar包
如图,是不是很简单就2个包,一个是mysql数据库连接用的,一个是mybatis的。放进路径他会自动添加支持。
万一放错了,就自己
选中lib里的java包 properties(或者 右键-> build path->add to build path
继续看下一页,重点开始了!
4.配置web.xml
其实不用配置默认
5. 配置mybatis-config.xml 注意看细节
路径:在src下
[code]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- jdbc:mysql://localhost:3306/blog?useSSL=false 问号后面的别忘记写 -->
<configuration>
<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/blog?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--
重点的地方 这个配置的路径一定写
-->
<mappers>
<mapper resource="Blog_UserMapper.xml"/>
</mappers>
</configuration>
[/code]
附图
标签含义:
<configuration>:声明在标签里面的信息是配置信息
<environment>:声明环境变量
<transactionManager>:声明事务管理器 它的类型(type)有:JDBC(基于jdbc的事务) 还有 MANAGED(托管的事务)
<dataSource>:声明数据源,数据源的类型有NOPOOLED ,POOLED ,JIDN
<property>:jdbc连接的一些属性
<mappers>:声明我们定义的一个个Mapper类,或者说是关联
<mapper>:声明Mapper的路径
大致就这样了。
6.配置Blog_UserMapper.xml
(这个名字是自定义的,配置也是最重要的,要呼应上面
mybatis-config.xml中写的,这里也是最重要的数据库语句写的地方了,有详细的标注,也建议对应你写的对象取名。)
路径:在src下
[code]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.javar.example.BlogMapper">
<!--
namespace:名称空间 绑定接口的情况就写接口路径(这里没写接口随便取)
id:唯一标识 绑定接口的情况一定要跟方法名一样
resultType:返回值类型
#{id} 从传递过来的参数 中取出ID值 这里我们的是uid
-->
<select id="selectBlog_User" resultType="cc.javar.mybatis.bean.Blog_User">
select * from blog_user where uid = #{uid}
<!-- 也可以用这个方案 select uid,username,userpassword,uname,gender,email from blog_user where uid = #{uid}
假如你的对象属性跟数据库不一样也是有替代方案,比如数据库里是uid 你属性写的是id,你可以这样写
也可以用这个方案 select uid id,username,userpassword,uname,gender,email from blog_user where uid = #{uid}
好了 其他自己琢磨
-->
</select>
</mapper>
[/code]
附图
这里写的就是查询blog_user数据表的所有内容,也可以按解释的方法写,这里可是非常重要的地方一定要理解!
继续下一页内容
7.编写我们的Java对象 cc.javar.mybatis.bean.Blog_User
[code]
package cc.javar.mybatis.bean;
public class Blog_User {
private Integer uid;//id
private String username;//帐号
private String userpassword;//密码
private String uname;//名字
private char gender;//性别 1男 0女
private String email;//邮箱
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Blog_User [uid=" + uid + ", username=" + username + ", userpassword=" + userpassword + ", uname="
+ uname + ", gender=" + gender + ", email=" + email + "]";
}
}
[/code]
这类就是我们的对象用户属性,一定要对应数据库的属性,一定要一样,也方便记忆。
8.写测试类 cc.javar.mybatis.bean.test.MyBatisTest
[code]
package cc.javar.mybatis.bean.test;
import java.io.IOException;
import java.io.InputStream;
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 cc.javar.mybatis.bean.Blog_User;
public class MyBatisTest {
/**
* 1根据Xml配置文件(全局配置文件)创建一个sqlSessionFactory对象
* 2使用sqlSession工厂,获取sqlSession对象使用他来执行 增删改查
* 3运行一次sqlSession 就是对数据库的一次增删改查,用完一定要关闭
* @throws IOException
*/
@Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取sqlsession实例,可以直接执行已经映射的SQL语句
SqlSession session = sqlSessionFactory.openSession();
try {
//session.selectOne(SQL的唯一标识(这里可以用namespace+id,也是建议这么写如下显示),执行SQL要用的uid参数)
Blog_User user = session.selectOne("cc.javar.example.BlogMapper.selectBlog_User", 1);
//在打印看看获取的值
System.out.println(user);
} finally {
//这个一定要关掉
session.close();
}
}
}
[/code]
这里记得用配置 JUnit4测试单元建立,首先肯定要配置JUnit4。
JUnit4单元测试框架开启的教程
到此为止都完成了
结构图
那就用JUnit4测试 运行
cc.javar.mybatis.bean.test.MyBatisTest的方法text()
结果如下
好了数据已经获取到了,步骤就到此,我们也完整的用面对对象方法获取了数据库的内容,目的是让你们了解mybatis如何配置的!
完全不理解?摸不到头脑?确实简单的截图步骤是让你无法理解 所以准备了完整源码包和数据库包参考吧!
MyBatis配置方案下载
现在spring的配置和springmvc的配置与mybatis配置都写好了,下回就讲SSM整合教程。