MyBatis入门教程(基于Mybatis3.2)
?
MyBatis和Hibernate一樣都是基于ORM的關(guān)系型數(shù)據(jù)庫框架
ORM工具的基本思想:
1.從配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory?產(chǎn)生 session 3. 在session中完成對數(shù)據(jù)的增刪改查和事務(wù)提交等. 4. 在用完之后關(guān)閉session。
5.在java對象和數(shù)據(jù)庫之間有做mapping的配置文件,也通常是xml文件。
?
?
MyBatis 是支持 普通 SQL 查詢 , 存儲過程 和 高級映射 的優(yōu)秀持久框架。MyBatis 消除了幾乎所有的 JDBC 代碼和參數(shù)的手工設(shè)置以及對結(jié)果集的檢索封裝。
?
本文就一個demo的形式,講訴MyBatis的數(shù)據(jù)庫操作過程,新建一個web項目,項目結(jié)構(gòu)如圖:
我們需要準(zhǔn)備mybatis3.2.jar和mysql的jar,日志輸出的jar根據(jù)自己項目的需要
?
?
新建數(shù)據(jù)庫,數(shù)據(jù)表是users,設(shè)置id為主鍵,同時自動增長
?
?
新建一個資源文件config
編寫數(shù)據(jù)庫配置信息文件db.properties:
driver=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\:3306/db_mysql?useUnicode\=true&characterEncoding\=utf-8 username=root password=111?
?
?
編寫pojo類:
package com.mybatis.entity;public class User {/** ID*/private int id;/** 用戶姓名 */private String name;/** age*/private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}?
?
?
編寫pojo類對應(yīng)的mapper文件:
<?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,namespace的值習(xí)慣上設(shè)置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的 --> <mapper namespace="com.mybatis.mapper.userMapper"><!-- 在select標(biāo)簽中編寫查詢的SQL語句, 設(shè)置select標(biāo)簽的id屬性為findById,id屬性值必須是唯一的,不能夠重復(fù)parameterType可以在MyBatis的配置文件里設(shè)置,也可以直接用包名+類名--><insert id="save" parameterType="User">insert into users(id,name,age) value(#{name},#{age})</insert><update id="update" parameterType="User">update users set name=#{name},age=#{age} where id=#{id}</update><delete id="delete" parameterType="int">delete from users where id=#{id}</delete><select id="findById" parameterType="int" resultType="User">select * from users where id=#{id}</select><select id="findAll" resultType="User">select * from users</select> </mapper>?
?
然后,在編寫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><!-- 數(shù)據(jù)庫配置文件 --> <properties resource="db.properties" /> <!-- 實體類,簡稱 -設(shè)置別名 --><typeAliases><typeAlias alias="User" type="com.mybatis.entity.User" /></typeAliases><!-- 讀取db.properties里的數(shù)據(jù),進行數(shù)據(jù)庫配置 --><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}" /><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!-- 注冊userMapper.xml文件 --><mappers><mapper resource="com/mybatis/mapper/userMapper.xml"/></mappers></configuration>?
?
測試類:
import java.io.Reader;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.mybatis.entity.User;public class Test {public static void main(String[] args) {String resource = "mybatis-config.xml";try{//加載Mybatis的配置文件Reader reader = Resources.getResourceAsReader(resource);//構(gòu)建sqlSession的工廠SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//創(chuàng)建可以執(zhí)行sql的SqlSessionSqlSession session = sessionFactory.openSession();//映射sql的標(biāo)志字符串String statement = "com.mybatis.mapper.userMapper.findById";//執(zhí)行查詢返回id為1的User對象User user = session.selectOne(statement,1);System.out.println(user);}catch (Exception e) {e.printStackTrace();}} }然后,可以編寫日志文件,進行日志輸出
log4j.properties\uFF0C log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG運行測試類,可以輸出,說明我們的mybatis搭建好了,可以進行數(shù)據(jù)庫操作
?
?
需要注意的:
為了統(tǒng)一編碼,建議新建數(shù)據(jù)庫時設(shè)置成utf-8的
還有測試時,那個id一定要和userMapper.xml里的id對應(yīng),mybatis是根據(jù)這個id調(diào)用sql函數(shù)的哦
配置mybatis文件時,一定要注意順序,一般都是先配置別、數(shù)據(jù)庫配置、然后mapper文件注冊的
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/mzq123/p/5450632.html
總結(jié)
以上是生活随笔為你收集整理的MyBatis入门教程(基于Mybatis3.2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux安装elasticsearch
- 下一篇: 华强北三代悦虎1562A怎么样?