MyBatis的简单使用
首先我来介绍一下什么是MyBatis:MyBatis是java的三大框架之一,用来与数据库交互
底层是实现是采用的jdbc,那么我们这边简单的声明一下MyBatis的好处!容易掌握,SQL语句统一管理,写在xml文件中等等….
Mybatis参考资料和jar包
MyBatis参考项目
我们首先需要以下这些类
1.dao(dao接口)
2.entity(实体类)
3.util(抽取出来的工具类)
4.test(测试类)
需要的文件
1.database.properties(连接数据库的参数配置文件)
2.mybatis-config.xml(MyBatis配置文件)
接下来就一个一个的介绍这些文件怎么写:
1.我们首先写database.properties配置文件
#数据库驱动
driver=com.mysql.jdbc.Driver
#连接url
url=jdbc:mysql://127.0.0.1:3306/mycodelibrary?
useUnicode=true&characterEncoding=utf-8
#数据库用户名
user=root
#数据库密码
password=123
2.然后就是MyBatis的配置文件
<?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>
<!-- 加载类路径下的数据库配置信息属性文件 -->
<properties resource="database.properties"/>
<!-- 配置MyBatis实现log4j -->
<settings>
<!-- 配置mybatis的log实现为LOG4J -->
<setting name="logImpl" value="LOG4J" />
<!-- 设置resultMap的自动映射级别为NONE(禁止自动匹配) -->
<!-- <setting name="autoMappingBehavior" value="NONE" /> -->
</settings>
<!--类型别名-->
<typeAliases>
<package name="keyboard.entity"/>
</typeAliases>
<!-- 配置数据库的环境 -->
<environments default="mysql_development">
<environment id="mysql_development">
<!-- 配置事物管理 -->
<transactionManager type="JDBC"/>
<!-- POOLED UNPOOLED JNDI -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射文件 -->
<mappers>
<mapper resource="keyboard/dao/UserMapper.xml"/>
</mappers>
</configuration>
紧接着就是数据库的实体类(entity)
package keyboard.entity;
/**
* 用户实体类
* @author 2B键盘
*
*/
public class User {
private int id;//id
private String username;//用户名
private String password;//密码
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在这边写完之后我们就可以开始写SQL语句和dao接口了
我们首先来写dao接口
package keyboard.dao;
import java.util.List;
import keyboard.entity.User;
/**
*
* @author 2B键盘
*
*/
public interface UserMapper {
/**
* 添加一条新的用户数据
* @param username
* @param password
* @return null
*/
public int addUser(User user);
/**
* 查询用户数据
* @param user
* @return
*/
public List<User> selectUserData(User user);
}
映射文件xml所有SQL语句都放在这个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">
<!-- namespace命名空间 必须存唯一
保证和子元素中id来联合使用区别不同的mapper文件
-->
<mapper namespace="keyboard.dao.UserMapper">
<!-- 保存用户注册数据 -->
<insert id="addUser" parameterType="User">
insert into TestDemo(
username,password
)
value(
#{username},#{password}
)
</insert>
<!-- 查询用户数据 -->
<select id="selectUserData" resultType="User">
select username,`password`
from userdata
where username=#{username} and password=#{password}
</select>
</mapper>
在上面id必须要和dao接口中的方法名一致#{username}和#{password}是实体类(entity)的构造方法和变量名一致
然后我们将常MyBatis常用的语句抽出来单独写成一个类
package keyboard.util;
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;
public class MyBatisUtil {
private static SqlSessionFactory factory;
static{//在静态代码块下factory只会被创建一次
System.out.println("factory================");
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
System.out.println("2");
System.out.println(factory);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SqlSession createSqlSession(){
return factory.openSession(false);//true为自动提交事务
}
public static void closeSqlSession(SqlSession sqlSession){
if(null != sqlSession){
sqlSession.close();
}
}
}
最后就是测试的时刻了
“`
package keyboard.test;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;
import keyboard.dao.UserMapper;
import keyboard.entity.TestDemo;
import keyboard.entity.User;
import keyboard.util.MyBatisUtil;
public class Testone {
private Logger logger = Logger.getLogger(Testone.class);
/**
*
*/
@Test
public void one(){
//创建slqsession对象
SqlSession sqlSession=null;
int count=0;
//list集合存放查询到的数据
List<User> result=new ArrayList<User>();
try {
sqlSession=MyBatisUtil.createSqlSession();
User a=new User();
a.setUsername("testusername");
a.setPassword("testpassword"); result=sqlSession.getMapper(UserMapper.class).selectUserData(a);
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
}finally{
MyBatisUtil.closeSqlSession(sqlSession);
}
for(User u : result){
System.out.println("用户名---------------->"+u.getUsername());
System.out.println("密码---------------->"+u.getPassword());
}
}
}
这样我们就实现了简单的查询了,我写的不怎么清楚,由于第一次写博客大家见谅!在上面我提供了mybatis的jar包和一个mybatis的简单查询,不懂的大家可以看看那个项目,谢谢大家!