mybatis快速入门程序案例
环境准备:eclipse、jdk1.7
内容目录:
1. mybatis简单介绍
2. 快速入门案例
3. 实现对数据库的增删改查(CRUD)
1、mybatis简单介绍:
mybaits是一个持久层框架,对jdbc操作数据库的过程进行了封装。可以简单理解为对数据库的增删改查,基本只用关注sql语句即可,非常方便。
2、快速入门案例:实现对数据库的查询,输出至控制台
mybatis开发过程步骤:先实现功能,不懂没关系,后面再详解。
1、创建数据库
创建mybaits数据库及user表,插入三条数据。
2、创建web工程项目,项目名:mybaits
项目的目录结构,其中src为源文件,存放类,配置文件等,编译后会形成.classes文件
3、导jar包
最后会上传打包好的常用的jar包。
4、编写sqlMapConfig.xml配置文件
<?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>
<!-- 这里配置不做解释,作用是引入连接池,与数据库进行连接。
和spring整合后environments配置将不再使用 -->
<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?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!--此段代码为映射mapper.xml文件-->
<mappers>
<mapper resource="com/zixue/mapper/UserMapper.xml"/>
</mappers>
</configuration>
5、准备POJO类,Mapper接口及sql语句
pojo类:类的属性名与数据库的字段名一致(会自动映射,不一致就要手动映射)
为何要pojo类?因为创建与数据库映射的pojo类,可以实现对属性的封装,调用该类的对象即可拿到该类的所有属性和方法,进而传递至mapper.xml实现对数据库的增删改查。
public class User {
private Long id;
private String username;
private String password;
get()\set().....方法
}
UserMapper接口:
public interface UserMapper {
User select(User u);
}
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">
<mapper namespace="com.zixue.mapper">
<select id="select" parameterType="com.zixue.pojo.User" resultType="com.zixue.pojo.User">
select * from user where id = #{id}
</select>
</mapper>
1、namespcae指向UserMapper.java的存放目录
2、id为接口方法的名称,parameterType为传入参数,resultType为返回值参数,与UserMapper接口一一对应。
这样做法是为了自动映射,实现Mapper动态代理,根据UserMapper接口来创建接口的动态代理对象,相当于程序员只需要关注sql语句本身。其中语句当中“#{}”代表一个占位符,内容可以任意,不过一般为了有意义,常将传入的参数属性填入。也可以用“${}”来拼接sql语句,此时括号中只能是明确的value值
最终目录结构:
图中编写了测试类demo.java,用来单元测试,检测代码功能:
public class demo {
@Test
public void demo1() throws IOException{
//创建sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//加载sqlMapConfig.xml配置文件,由于用IO流获取配置文件,如果未找到文件,需要抛异常。
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
//创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行SqlSession对象执行查询,获取结果User
Object user = sqlSession.selectOne("select", 1L);
System.out.println(user);
//释放资源
sqlSession.close();
}
}
运行测试类,发现控制台打印如下:
实现了对数据库的简单的查询
mybatis的jar包及约束
链接:http://pan.baidu.com/s/1i4AxCFz 密码:y9t4