這篇文章我們來做一個入門的案例:
建表;
給出案例結構:
第一步:編寫po類:User.java
package cn.itcast.mybatis.po; import java.util.Date; public class User { private int id;//主鍵 private String username;//用戶的名稱 private Date birthday;//生日 private String sex;//性別 private String address;//地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
第二步:編寫config包下面的SqlMapConfig.xml。這個配置文件主要是配置mybaits運行環境,數據源,事務等。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/mybaits?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 把映射文件(sqlmap/user.xml)加載進sqlMapConfig.xml--> <mappers> <mapper resource="sqlmap/user.xml"/> </mappers> </configuration>
第三步:編寫映射文件sqlmap/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"> <!-- nanmespace:命名空間。 作用就是對sql進行分類話管理,理解Sal分離 注意:使用mapper代理方式,namespace有特殊重要的作用 --> <mapper namespace="test"> <!-- 根據id獲取用戶信息 --> <!-- 在映射文件中配置很多sql語句 --> <!-- id:標識映射文件中的sql; 將sql語句封裝到mappedStatement對象中,所以將id稱為statement的id;parmenterType:指定輸入的參數的類型,這里指定的int型 #{}表示一個占位符號; #{id}:其中的id表示接收輸入的參數,參數名稱就是id,如果輸入參數就是簡單類型,#{}中的參數名可以任意,可以value或其它名稱 resultType:指定的sql輸出結果的所映射的java對象類型,select指定resultType表示將單條記錄映射成的java對象; --> <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User"> select * from user where id = #{id} </select> <!-- 自定義條件查詢用戶列表 --> <select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User"> select * from user where username like '%${value}%' </select> </mapper>
第四步:編寫日志文件(log4j.properties)和Junit測試程序:
log4j.properties文件源碼:
# Global logging configuration #\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u65e5\u5fd7\u7ea7\u522b\u8981\u8bbe\u7f6e\u6210DEBUG\uff0c\u751f\u4ea7\u73af\u5883\u8bbe\u7f6e\u6210info\u6216error 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
Junit測試程序源碼:
package cn.itcast.mybatis.first; import java.io.IOException; import java.io.InputStream; 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.Before; import org.junit.Test; import cn.itcast.mybatis.po.User; public class Mybatis_first { //會話工廠 private SqlSessionFactory sqlSessionFactory; //這些事必備的,所以放在Before這里了 @Before public void createsqlSessionFactory() throws IOException { //配置文件 String resource="SqlMapConfig.xml"; InputStream inputStream=Resources.getResourceAsStream(resource); //使用SqlSessionFactoryBuilder從配置文件中創建SqlSessionFactory. sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } @Test //根據id查詢用戶的信息 public void testFindUseById() { //數據庫會話實例 SqlSession sqlSession=null; try { //創建數據庫會話實例sqlSession; sqlSession=sqlSessionFactory.openSession(); User user=sqlSession.selectOne("test.findUserById", 10);
//輸出對象的hashcode System.out.println(user); } catch (Exception e) { e.printStackTrace(); } finally{ //如果sqlSession實例是創建的那么把他關閉掉 if(sqlSession!=null) {sqlSession.close(); } } } }
運行結果:成功了,
輸出為:cn.itcast.mybatis.po.User@4c1bd4f6