欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年06月01日 11:19:29   作者:dsbjoe  
MyBatis框架為Java程序的數(shù)據(jù)庫操作帶來了很大的便利,這里我們就從最基礎(chǔ)的入手,來看一下Java的MyBatis框架項目搭建與hellow world示例,需要的朋友可以參考下

新建項目(我使用的是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>

二、創(chuàng)建數(shù)據(jù)庫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

插入一條數(shù)據(jù)

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對應(yīng)的映射文件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標(biāo)簽可以將公共的sql提取出來復(fù)用 -->
 <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會將從數(shù)據(jù)庫查詢出來的記錄根據(jù)列名與pojo中的字段進(jìn)行匹配, 所以上面的user_name,user_age ,user_address這幾個字段都取了別名,跟pojo中的字段相對應(yīng)。 如果不起別名, 查詢出來的對象,這幾個字段是沒有值的。


五、編寫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> 

 <!-- 數(shù)據(jù)庫配置信息 -->
 <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>

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

現(xiàn)在就可以編寫測試類了。來測試一下。

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");
 //返回值是記錄條數(shù)
 int resultCount = session.insert("com.zf.mybatis.pojo.UserMapper.add", user );
 session.commit() ;
 System.out.printf("userID:%d,總記錄條數(shù):%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");
 //返回值是修改條數(shù)
 int updateCount = session.update("com.zf.mybatis.pojo.UserMapper.update", user );
 session.commit() ;
 System.out.printf("修改條數(shù):%d" ,updateCount); 
 } finally {
 session.close();
 }
 }
 
 @Test
 public void testDelete(){
 SqlSession session = sqlSessionFactory.openSession();
 try {
 //返回值是刪除條數(shù)
 int deleteCount = session.update("com.zf.mybatis.pojo.UserMapper.deleteById", 4 );
 session.commit() ;
 System.out.printf("刪除條數(shù):%d" ,deleteCount ); 
 } finally {
 session.close();
 }
 }


}

運行testQueryUser結(jié)果如下:

shanghai,pudong
summer

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

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

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> 

相關(guān)文章

  • IDEA消除指定警告的兩種方法小結(jié)

    IDEA消除指定警告的兩種方法小結(jié)

    有時候IDEA會代碼中給出一些我們不需要的警告,看起來就很不美觀,本文主要介紹了IDEA消除指定警告的兩種方法,感興趣的可以了解一下
    2023-08-08
  • java判斷字符串是否有逗號的方法

    java判斷字符串是否有逗號的方法

    下面小編就為大家?guī)硪黄猨ava判斷字符串是否有逗號的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Java?IO及BufferedReader.readline()出現(xiàn)的Bug

    Java?IO及BufferedReader.readline()出現(xiàn)的Bug

    這篇文章主要介紹了Java?IO及BufferedReader.readline()出現(xiàn)的Bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java異常 Factory method''sqlSessionFactory''rew exception;ested exception is java.lang.NoSuchMethodError:

    Java異常 Factory method''sqlSessionFactory''rew exception;este

    這篇文章主要介紹了Java異常 Factory method ‘sqlSessionFactory‘ threw exception; nested exception is java.lang.NoSuchMethodError:,本文介紹了springboot 引入mybatis-plus后報錯的解決方案,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 關(guān)于QueryWrapper,實現(xiàn)MybatisPlus多表關(guān)聯(lián)查詢方式

    關(guān)于QueryWrapper,實現(xiàn)MybatisPlus多表關(guān)聯(lián)查詢方式

    這篇文章主要介紹了關(guān)于QueryWrapper,實現(xiàn)MybatisPlus多表關(guān)聯(lián)查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Mysql?json類型字段Java+Mybatis數(shù)據(jù)字典功能的實踐方式

    Mysql?json類型字段Java+Mybatis數(shù)據(jù)字典功能的實踐方式

    這篇文章主要介紹了Mysql?json類型字段Java+Mybatis數(shù)據(jù)字典功能的實踐方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 深入了解Java中的反射機制(reflect)

    深入了解Java中的反射機制(reflect)

    Java的反射機制允許我們對一個類的加載、實例化、調(diào)用方法、操作屬性的時期改為在運行期進(jìn)行,這大大提高了代碼的靈活度,本文就來簡單講講反射機制的具體使用方法吧
    2023-05-05
  • Java查詢時間段(startTime--endTime)間的數(shù)據(jù)方式

    Java查詢時間段(startTime--endTime)間的數(shù)據(jù)方式

    這篇文章主要介紹了Java查詢時間段(startTime--endTime)間的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 精煉解讀方法的定義與使用

    Java 精煉解讀方法的定義與使用

    Java語言中的“方法”(Method)在其他語言當(dāng)中也可能被稱為“函數(shù)”(Function)。對于一些復(fù)雜的代碼邏輯,如果希望重復(fù)使用這些代碼,并且做到“隨時任意使用”,那么就可以將這些代碼放在一個大括號“{}”當(dāng)中,并且起一個名字。使用的時候,直接找到名字調(diào)用即可
    2022-03-03
  • Java數(shù)據(jù)類型超詳細(xì)示例講解

    Java數(shù)據(jù)類型超詳細(xì)示例講解

    Java程序中要求參與的計算的數(shù)據(jù),必須要保證數(shù)據(jù)類型的一致性,如果數(shù)據(jù)類型不一致將發(fā)生類型的轉(zhuǎn)換。本文將通過示例詳細(xì)說說Java中數(shù)據(jù)類型的轉(zhuǎn)換,感興趣的可以了解一下
    2022-11-11

最新評論