国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java的MyBatis框架項目搭建與hellow world示例

2019-11-26 14:16:07
字體:
來源:轉載
供稿:網友

新建項目(我使用的是maven項目)mybatis-study-01

一、加入mybatis與mysql-connector依賴包到pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mybatis</groupId> <artifactId>mybatis-study-01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mybatis-01</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>  <dependencies> <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.10</version>  <scope>test</scope> </dependency>  <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency>  <dependency>  <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> </dependency>      </dependencies></project>

二、創建數據庫mybatis-test
新建一張user表用于測試。建表sql如下:

CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `password` varchar(255) default NULL, `user_name` varchar(50) default NULL, `user_age` int(11) default NULL, `user_address` varchar(200) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `userName` (`user_name`)) EN

插入一條數據

INSERT INTO `user` VALUES ('1', '123131', 'summer', '100', 'shanghai,pudong');


三、在項目中編寫pojo對象。

package com.zf.mybatis.pojo;public class User { private int id; private String password ; private String userName; private String userAge; private String userAddress; 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 String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}

四、編寫pojo對應的映射文件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="com.zf.mybatis.pojo.UserMapper"> <!-- 使用sql標簽可以將公共的sql提取出來復用 --> <sql id="queryFields"> id , password , user_name as userName , user_age as userAge , user_address as userAddress </sql>  <select id="selectByID" parameterType="int" resultType="User">  select   <include refid="queryFields"/>   from `user` where id = #{id} </select>  <insert id="add" parameterType="User" useGeneratedKeys="true" keyProperty="id" >  insert into `user`  (password , user_name , user_age , user_address)  values(#{password} , #{userName} , #{userAge} , #{userAddress} ) </insert>  <update id="update" parameterType="User" > update `user` set password = #{password} , user_name = #{userName}, user_age = #{userAge}, user_address = #{userAddress} where id = #{id} </update>  <delete id="deleteById" parameterType="int">  delete from `user` where id = #{id} </delete>  </mapper>

注意:上面的namespace的值為com.zf.mybatis.pojo.UserMapper,可以自定義 ,UserMapper不是一個類,不需要存在的。
另外,mybatis會將從數據庫查詢出來的記錄根據列名與pojo中的字段進行匹配, 所以上面的user_name,user_age ,user_address這幾個字段都取了別名,跟pojo中的字段相對應。 如果不起別名, 查詢出來的對象,這幾個字段是沒有值的。


五、編寫mybatis的配置文件mybatis-config.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>   <typeAlias alias="User" type="com.zf.mybatis.pojo.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://127.0.0.1:3306/mybatis-test"/>  <property name="username" value="root"/>  <property name="password" value="root"/>  </dataSource> </environment> </environments>  <!-- 映射文件 --> <mappers> <mapper resource="conf/User.xml"/> </mappers></configuration>

在該配置文件中配置了數據庫的鏈接方式,以及注冊所有的映射文件,還可以設置mybatis的一些參數。

現在就可以編寫測試類了。來測試一下。

package com.zf.mybatis;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.Before;import org.junit.Test;import com.zf.mybatis.pojo.User;public class TestMyBatis {  private SqlSessionFactory sqlSessionFactory; private Reader reader;  @Before public void init(){ try { reader = Resources.getResourceAsReader("mybatis-config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } }  @Test public void testQueryUser(){ SqlSession session = sqlSessionFactory.openSession(); try { User user = (User) session.selectOne("com.zf.mybatis.pojo.UserMapper.selectByID" ,1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName()); } finally { session.close(); } }  @Test public void testInsertUser(){ SqlSession session = sqlSessionFactory.openSession(); try { User user = new User() ; user.setUserName("abcde"); user.setUserAge(15) ; user.setUserAddress("hangzhou/zhejiang"); user.setPassword("123456"); //返回值是記錄條數 int resultCount = session.insert("com.zf.mybatis.pojo.UserMapper.add", user ); session.commit() ; System.out.printf("userID:%d,總記錄條數:%d" , user.getId() , resultCount); //獲取插入對象的id } finally { session.close(); } }  @Test public void testUpdateUser(){ SqlSession session = sqlSessionFactory.openSession(); try { User user = new User() ; user.setId(5) ; user.setUserName("updateName"); user.setUserAge(101) ; user.setUserAddress("shenzhen/guangdong"); user.setPassword("000000"); //返回值是修改條數 int updateCount = session.update("com.zf.mybatis.pojo.UserMapper.update", user ); session.commit() ; System.out.printf("修改條數:%d" ,updateCount);  } finally { session.close(); } }  @Test public void testDelete(){ SqlSession session = sqlSessionFactory.openSession(); try { //返回值是刪除條數 int deleteCount = session.update("com.zf.mybatis.pojo.UserMapper.deleteById", 4 ); session.commit() ; System.out.printf("刪除條數:%d" ,deleteCount );  } finally { session.close(); } }}

運行testQueryUser結果如下:

shanghai,pudongsummer

到此,一個mybatis的helloworld類型的小程序就出來了。

PS:MyBaits配置文件報錯解決
Mybaits的配置文件校驗很詭異,節點的位置還有要求
如下,會報錯:

The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,mappers?)". <?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">    <transactionManager type="JDBC"/>    <dataSource type="POOLED">     <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>     <property name="url" value="jdbc:oracle:thin:@xx:1521:xx"/>     <property name="username" value="ireport"/>     <property name="password" value="xxxx"/>    </dataSource>   </environment>  </environments>    <typeAliases>   <typeAlias type="com.ice.stat.online.model.EventFlag" alias="EventFlag"/>  </typeAliases>    <mappers>   <mapper resource="com/ice/stat/online/model/hbm/EventFlagMapper.xml"/>  </mappers>   </configuration> 

 
把typeAliases放到最上面就好了說:

<?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>   <typeAlias type="com.ice.stat.online.model.EventFlag" alias="EventFlag"/>  </typeAliases>    <environments default="development">   <environment id="development">    <transactionManager type="JDBC"/>    <dataSource type="POOLED">     <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>     <property name="url" value="jdbc:oracle:thin:@xx:1521:xx"/>     <property name="username" value="ireport"/>     <property name="password" value="xxxx"/>    </dataSource>   </environment>  </environments>      <mappers>   <mapper resource="com/ice/stat/online/model/hbm/EventFlagMapper.xml"/>  </mappers>   </configuration> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禹州市| 福海县| 绥宁县| 石柱| 锡林郭勒盟| 长兴县| 乡宁县| 惠水县| 玉屏| 永和县| 什邡市| 东乌珠穆沁旗| 勐海县| 天峻县| 宜兰市| 贵德县| 通渭县| 万年县| 宁河县| 大埔区| 长葛市| 娄底市| 梨树县| 景德镇市| 靖西县| 思茅市| 银川市| 岳西县| 宁晋县| 定州市| 荣成市| 江西省| 山东省| 乐至县| 渭南市| 林口县| 荆州市| 鄂州市| 英山县| 长岭县| 科技|