MyBatis小白入门
1.为什么要使用mybatis而不是jdbc?
* 因为jdbc要不断的创建销毁连接,会影响系统的性能;
*因为jdbc是把在java代码中硬编码,当改变sql的时候,需要修改代码,不利于系统的维护
*mybatis是自己编写sql语句,这样的话,便于自己的控制
2.mybatis的运行流程如下图:
主要的配置:sqlmapconfig(配置mybatis的运行环境等信息,注意只有一个); map.xml(sql映射文件,一个pojo一个,注意需要在SqlMapConfig中加载),整个流程简而言之就是体现了java的面向对象的思路.特别是结果的输出!
3.1定义user的pojo(注意首先在数据库中创建相关的表结构),属性如下:
private int id;
private String username;
private String sex;
private Date birthday;
private String address;
(注意编写set和get方法,和toString()方法,这样的话在后面使用junit进行测试时,可以直接打印)
3.2配置相关的文件配置
*加载log4j进行日志打印(添加jar包和logj.propertoes的配置文件)
# 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
*加载mapper.xml配置文件(这里指的是user.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="test">
<!-- sql语句的id,statement的id ,#{}的作用就是站位符,相当于是jdbc的?
parameterType: 传入参数的类型 resultType:返回值类型
namespace的作用是为了区分sql的作用(这里不要的话也不会出现问题)
<select id="getUserById" parameterType="int" resultType="com.bank.mybatis.po.User">
select * from 'user' where id= #{id};
</select>
</mapper>
*配置SqlMapConfig
<?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配置文件 -->
<mappers>
<!-- resource是基于classpath查找的 -->
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
4.编写junit进行测试
5.整体的各个部分的调用关系如下图