最近一段時(shí)間過(guò)的有些迷茫了,好了不能在這樣了,樓主決定振作起來(lái)開始好好學(xué)習(xí)一些東西吧。研究mybatis吧!
萬(wàn)里之行起于小步,從搭建環(huán)境開始。
一、下載好jar包,既然是基本環(huán)境搭建就不用弄的太復(fù)雜就加入三個(gè)最基本的jar包
1、mybatis-3.1.0-SNAPSHOT.jar
2、mysql-connector-java-5.0.8-bin.jar
3、log4j-1.2.16.jar
二、mybatis是基于log4j日志框架的,恩,把log4j的日志數(shù)據(jù)配置文件也配置一下,就先把級(jí)別設(shè)定在debug的級(jí)別上
- # Rules reminder:
- # DEBUG < INFO < WARN < ERROR < FATAL
- # Global logging configuration
- log4j.rootLogger=DEBUG, stdout
- # My logging configuration...
- log4j.logger.org.mybatis.jpetstore=DEBUG
- ## Console output...
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
三、現(xiàn)在就開始對(duì)mybatis進(jìn)行配置,配置文件為一個(gè)xml文件,文件名自己決定,暫且就叫Configuration.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>
- <typeAliases>
- <!-- simple alias for full class name -->
- <typeAlias alias="User" type="com.akwolf.domain.User"/>
- </typeAliases>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://192.168.2.110:3306/mybatis"/>
- <property name="username" value="zhangh"/>
- <property name="password" value="123456"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="com/akwolf/persistence/UserMapper.xml"/>
- </mappers>
- </configuration>
上面這個(gè)配置文件相當(dāng)于一個(gè)全局的配置,所以在這里面配置也會(huì)影響到其他的配置文件
這里先對(duì)上面幾個(gè)標(biāo)簽?zāi)吧鷺?biāo)簽解釋一下
<typeAliases>就是為為一個(gè)完整的類名去一個(gè)別名,我猜你不會(huì)愿意在每次用到一個(gè)類時(shí)都把類的完整路勁給帶上,所以上面的User就可以代表com.akwolf.domain.User
這樣做的確是一件很省力氣的事
<environments default="development">也就是在不同的環(huán)境中選擇不同的配置,如果現(xiàn)在是開發(fā)環(huán)境連接的數(shù)據(jù)庫(kù)可能就與測(cè)試連接數(shù)據(jù)庫(kù)的配置不同,default代表的就是一個(gè)默認(rèn)使用的環(huán)境。
<mappers>也就是注冊(cè)你寫了哪些Mapper映射文件。這個(gè)就先簡(jiǎn)單介紹一下,下一篇文章就把每一個(gè)標(biāo)簽的使用和用處羅嗦一遍。
四、建立領(lǐng)域模型User
- import java.io.Serializable;
- public class User implements Serializable {
- private static final long serialVersionUID = 1L;
- private int id;
- private String name;
- private int age;
- //setter && getter
- }
五、建立對(duì)數(shù)據(jù)庫(kù)操作的dao接口
- package com.akwolf.persistence;
- import com.akwolf.domain.User;
- public interface UserMapper {
- /**
- * 通過(guò)id查詢用戶
- *
- * @param id
- * 用戶id
- * @return 用戶實(shí)體
- */
- public User getUserById(int id);
- }
六、編寫對(duì)dao接口進(jìn)行實(shí)現(xiàn)的Mapper【UserMapper.xml】,就是一些sql語(yǔ)句
- <?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.akwolf.persistence.UserMapper">
- <select id="getUserById" parameterType="int" resultType="User">
- select * from tbl_user where id = #{id}
- </select>
- </mapper>
#{id}表示傳入的參數(shù),是一個(gè)變量
到此一個(gè)基本的mybatis運(yùn)行環(huán)境已經(jīng)搭建起來(lái),用測(cè)試類測(cè)試一下
- package com.akwolf.test;
- import java.io.IOException;
- 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 org.junit.AfterClass;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import com.akwolf.domain.User;
- import com.akwolf.persistence.UserMapper;
- public class UserTest {
- private static SqlSession session ;
- @BeforeClass
- public static void init(){
- // 配置文件的路徑
- String res = "com/akwolf/conf/Configuration.xml" ;
- try {
- // 1、加載配置文件
- Reader reader = Resources.getResourceAsReader(res);
- // 2、創(chuàng)建SqlSessionFactory,用于取得SqlSession
- SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader) ;
- // 3、取得一個(gè)SqlSession(對(duì)Jdbc中connection的封裝)
- session = factory.openSession() ;
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Test
- public void testGet() {
- // 4、取得mybatis實(shí)現(xiàn)并實(shí)例化好的UserMapper接口實(shí)例
- UserMapper mapper = session.getMapper(UserMapper.class) ;
- // 5、進(jìn)行dao層的操作
- User u = mapper.getUserById(1) ;
- System.out.println(u);
- }
- @AfterClass
- public static void destory(){
- // 6、關(guān)閉SqlSession
- session.close() ;
- }
- }
上面測(cè)試類的主要建立數(shù)據(jù)庫(kù)連接并對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作,為了方便以后查看和大家的理解,注釋寫的很詳細(xì)。
好,到這里第一個(gè)mybatis程序運(yùn)行成功,下一次就研究一下Mybatis配置文件的詳細(xì)配置。