MyBatis介紹java
框架技術mysql
是一個應用程序的半成品sql
提供可重用的公共結構數據庫
按必定規則組織的一組組件apache
例如寫簡歷:使用模板不用考慮佈局、排版等,提升效率,可專心在簡歷內容上,結構統一,便於人事閱讀,新手也能夠做出專業的簡歷。mybatis
使用框架的好處架構
不用再考慮公共問題app
專心在業務實現上框架
結構統一,易於學習、維護eclipse
新手也可寫出好程序
主流框架:
Strucs2 Hibernate Spring Spring MVC Mybatis
ORM(Object Relational Mapping)
編寫程序的時候,以面向對象的方式處理數據
保存數據的時候,卻以關係型數據庫的方式存儲
MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,而且更名爲MyBatis 。MyBatis是一個優秀的持久層框架,它對jdbc的操做數據庫的過程進行封裝,使開發者只須要關注 SQL 自己,而不須要花費精力去處理例如註冊驅動、建立connection、建立statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。它是一個半自動化的orm框架.
Jdbc的問題:
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
//經過驅動管理類獲取數據庫連接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
//定義sql語句 ?表示佔位符
String sql = "select * from user where username = ?";
//獲取預處理statement
preparedStatement = connection.prepareStatement(sql);
//設置參數,第一個參數爲sql語句中參數的序號(從1開始),第二個參數爲設置的參數值
preparedStatement.setString(1, "王五");
//向數據庫發出sql執行查詢,查詢出結果集
resultSet = preparedStatement.executeQuery();
//遍歷查詢結果集
while(resultSet.next()){
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//釋放資源
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Sql語句在代碼中硬編碼,形成代碼不易維護,實際應用sql變化的可能較大,sql變更須要改變java代碼。
第一個mybatis程序
Mybatis架構
查詢用戶表記錄數
使用MyBatis的開發步驟
使用myeclipse建立java工程
第三步:log4j.properties
在resources下建立log4j.properties以下:
# 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
mybatis默認使用log4j做爲輸出日誌信息
<?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>
<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/mybatisdemo" />
<property name="username" value="root" />
<property name="password" value="12345678" />
</dataSource>
</environment>
</environments>
</configuration>
第五步:建立pojo類
public class user {
private int id;
private String userName;
private int age;
get set…..
}
第六步:建立sql映射文件
建立sql映射文件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="cn.sns.dao">
<select id="getCount" resultType="int">
select count(*) from user
</select>
</mapper>
namespace :命名空間,用於隔離sql語句
第七步:加載映射文件
mybatis框架須要加載映射文件,將UserMapper.xml添加在mybatis-config.xml,以下
<mappers><mapper resource="cn/ssm/mapper/UserMapper.xml"/></mappers>
第八步:測試
public class test {
@Test
public void doTest() throws IOException
{
String resource = "mybatisConfig.xml";
//建立一個文件流
InputStream in = Resources.getResourceAsStream(resource);
//建立回話工廠
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
//建立回話
SqlSession sql = factory.openSession();
//執行sql語句
int count = sql.selectOne("cn.sns.dao.getCount");
//打印輸出共有多少條記錄
System.out.println(count);
}
}