一.Mybatis概述
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
二.Mybatis开发初体验
1.导包(1个核心包+12个依赖包+数据库驱动包)
2.主配置文件
<?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="db.properties"/>
<!-- 别名 -->
<typeAliases>
<typeAlias type="pojo.User" alias="User"/><!--单个类别名 -->
<package name="pojo"/><!-- 包别名:包及其子包下的所有类,首字母大小写都行 -->
</typeAliases>
<!-- 整合spring后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.jdbcUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.Password}"/>
</dataSource>
</environment>
</environments>
<!-- Mapper的位置 Mapper.xml是写Sql语句的文件的位置 -->
<mappers>
<mapper resource="pojo/User.xml" />
<!--
注册指定包下的所有mapper接口
如:<package name="cn.mybatis.mapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
-->
</mappers>
</configuration >
3.POJO类
public class User {
private Integer id;
private String username;
private String password;
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
}
4.映射文件
<?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">
<!-- 写Sql语句
namespace:命名空间
-->
<mapper namespace="user">
<!--
?在sql语句中表示占位符,可以替代参数
%在sql语句中表示通配符,在模糊查询中用到
使用#{}时,里面可以用任何字母表示取参数值
使用${}时,里面只能用value表示取参数值
-->
<!-- 通过ID查询一个用户 -->
<select id="findUserById" parameterType="Integer" resultType="pojo.User">
select * from user where id = ${value}
</select>
<!-- 根据用户名称模糊查询用户列表 -->
<select id="findUserByUsername" parameterType="String" resultType="pojo.User">
select * from user where username like "%"#{v}"%"
</select>
<!-- 添加用户,并返回id -->
<insert id="insertUser" parameterType="pojo.User">
<selectKey keyProperty="id" resultType="Integer" order="AFTER">
select last_insert_id()
</selectKey>
insert into user (username,password) values(#{username},#{password})
</insert>
<!-- 修改用户 -->
<update id="updateUserById" parameterType="pojo.User">
update user set username=#{username},password=#{password} where id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="Integer">
delete from user where id=#{ok}
</delete>
</mapper>
5.测试代码
public class mybatis {
@Test
//mybatis入门演示
public void fun() throws IOException{
// 加载核心配置文件
String resource = "mybatis.xml";
InputStream in = Resources.getResourceAsStream(resource);
// 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行SQL语句
//通过id查询
User u1 = sqlSession.selectOne("user.findUserById", 1);
System.out.println(u1);
//通过username模糊查询
// List<User> u2 = sqlSession.selectList("user.findUserByUsername", "啊");
// for(User u:u2){
// System.out.println(u);
// }
//添加用户
// User u=new User();
// u.setUsername("啊道");
// u.setPassword("eiwnefsdfsd");
// sqlSession.insert("user.insertUser", u);
// sqlSession.commit();
// System.out.println(u.getId());
//修改用户
// User u=new User();
// u.setId(1);
// u.setUsername("sfaf54rfsf");
// u.setPassword("549898498");
// sqlSession.update("user.updateUserById", u);
// sqlSession.commit();
//删除用户
// sqlSession.delete("user.deleteUserById", 6);
// sqlSession.commit();
}
}