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

mybatis實現(xiàn)對數(shù)據(jù)的增刪查改實例詳解

 更新時間:2016年07月25日 14:26:58   作者:wojiaohuangyu  
這篇文章主要介紹了mybatis實現(xiàn)對數(shù)據(jù)的增刪查改實例詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

前期準備

新建java工程或java wweb工程,需要導入以下的包,

基本工作已經(jīng)完成,接下來開始進入正題。

新建實體類

新建與數(shù)據(jù)庫表對應的實體類

package com.edu.hpu.domain; 
/** 
* @author Administrator 
*user表所對應的實體類 
*/ 
public class User { 
//實體類的屬性和表的字段名稱一一對應 
private int id; 
private String name; 
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; 
} 
//添加toString方法 
@Override 
public String toString() { 
return "User [id=" + id + ",name=" + name + ",age=" + age + "]"; 
} 
} 

添加Mybatis工具類

添加用到的工具類,如下所示,

package com.edu.hpu.util; 
import java.io.InputStream; 
import org.apache.ibatis.session.SqlSession; 
import org.apache.ibatis.session.SqlSessionFactory; 
import org.apache.ibatis.session.SqlSessionFactoryBuilder; 
public class MyBatisUtil { 
/** 
* 獲取SqlSessionFactory 
* @return SqlSessionFactory 
*/ 
public static SqlSessionFactory getSqlSessionFactory() { 
String resource = "conf.xml";//調(diào)取配置文件 
InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource); 
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); 
return factory; 
} 
/** 
* 獲取SqlSession 
* @return SqlSession 
*/ 
public static SqlSession getSqlSession() { 
return getSqlSessionFactory().openSession(); 
} 
/** 
* 獲取SqlSession 
* @param isAutoCommit 
* true 表示創(chuàng)建的SqlSession對象在執(zhí)行完SQL之后會自動提交事務 
* false 表示創(chuàng)建的SqlSession對象在執(zhí)行完SQL之后不會自動提交事務,這時就需要我們手動調(diào)用sqlSession.commit()提交事務 
* @return SqlSession 
*/ 
public static SqlSession getSqlSession(boolean isAutoCommit) { 
return getSqlSessionFactory().openSession(isAutoCommit); 
} 
} 

使用mybatis對數(shù)據(jù)進行增刪查改操作有兩種方法,分別為配置文件操作和注解操作。

通過配置文件進行操作

數(shù)據(jù)庫配置文件如下所示,對數(shù)據(jù)庫信息進行配置,

<?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" /> 
<!-- 配置數(shù)據(jù)庫連接信息 --> 
<dataSource type="POOLED"> 
<property name="driver" value="com.mysql.jdbc.Driver" /> 
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" /> 
<property name="username" value="root" /> 
<property name="password" value="admin" /> 
</dataSource> 
</environment> 
</environments> 
<mappers> 
<!-- 注冊userMapper.xml文件, 
userMapper.xml位于com.edu.hpu.mapping這個包下,所以resource寫成com/edu/hpu/mapping/userMapper.xml--> 
<mapper resource="com/edu/hpu/mapping/userMapper.xml"/> 
<!-- <mapper class="com.edu.hpu.mapping.UserMapper_11"/> --> 
</mappers> 
</configuration> 

配置操作數(shù)據(jù)庫語句文件,如下所示,

<?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.edu.hpu.mapping.userMapper"> 
<!-- 在select標簽中編寫查詢的SQL語句, 設置select標簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復 
使用parameterType屬性指明查詢時使用的參數(shù)類型,resultType屬性指明查詢返回的結(jié)果集類型 
resultType="com.edu.hpu.domain.User"就表示將查詢結(jié)果封裝成一個User類的對象返回 
User類就是users表所對應的實體類 
--> 
<!-- 
根據(jù)id查詢得到一個user對象 
--> 
<select id="getUser" parameterType="int" 
resultType="com.edu.hpu.domain.User"> 
select * from users where id=#{id} 
</select> 
<!-- 創(chuàng)建用戶(Create) --> 
<insert id="addUser" parameterType="com.edu.hpu.domain.User"> 
insert into users(name,age) values(#{name},#{age}) 
</insert> 
<!-- 刪除用戶(Remove) --> 
<delete id="deleteUser" parameterType="int"> 
delete from users where id=#{id} 
</delete> 
<!-- 修改用戶(Update) --> 
<update id="updateUser" parameterType="com.edu.hpu.domain.User"> 
update users set name=#{name},age=#{age} where id=#{id} 
</update> 
<!-- 查詢?nèi)坑脩?-> 
<select id="getAllUsers" resultType="com.edu.hpu.domain.User"> 
select * from users 
</select> 
</mapper> 

通過配置文件實現(xiàn)對數(shù)據(jù)庫的增刪查改基本上已經(jīng)完成,接下來給出測試類,
可以進行測試,如下所示,

package com.edu.hpu.test; 
import java.util.List; 
import com.edu.hpu.domain.User; 
import com.edu.hpu.util.MyBatisUtil; 
import org.junit.Test; 
import org.apache.ibatis.session.SqlSession; 
public class Test2 { 
@Test 
public void testAdd(){ 
//SqlSession sqlSession = MyBatisUtil.getSqlSession(false); 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
/** 
* 映射sql的標識字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, 
* addUser是insert標簽的id屬性值,通過insert標簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.addUser";//映射sql的標識字符串 
User user = new User(); 
user.setName("新增用戶小黃"); 
user.setAge(20); 
//執(zhí)行插入操作 
int retResult = sqlSession.insert(statement,user); 
//手動提交事務 
//sqlSession.commit(); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(retResult); 
} 
@Test 
public void testUpdate(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
/** 
* 映射sql的標識字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, 
* updateUser是update標簽的id屬性值,通過update標簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.updateUser";//映射sql的標識字符串 
User user = new User(); 
user.setId(3); 
user.setName("hello world"); 
user.setAge(25); 
//執(zhí)行修改操作 
int retResult = sqlSession.update(statement,user); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(retResult); 
} 
@Test 
public void testDelete(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
/** 
* 映射sql的標識字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, 
* deleteUser是delete標簽的id屬性值,通過delete標簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.deleteUser";//映射sql的標識字符串 
//執(zhí)行刪除操作 
int retResult = sqlSession.delete(statement,4); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(retResult); 
} 
@Test 
public void testGetAll(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(); 
/** 
* 映射sql的標識字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, 
* getAllUsers是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.getAllUsers";//映射sql的標識字符串 
//執(zhí)行查詢操作,將查詢結(jié)果自動封裝成List<User>返回 
List<User> lstUsers = sqlSession.selectList(statement); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(lstUsers); 
} 
} 

通過注解進行操作

通過注解進行操作需要寫一個接口,但是不必實現(xiàn),如下所示,

package com.edu.hpu.mapping; 
import java.util.List; 
import com.edu.hpu.domain.User; 
import org.apache.ibatis.annotations.Delete; 
import org.apache.ibatis.annotations.Insert; 
import org.apache.ibatis.annotations.Select; 
import org.apache.ibatis.annotations.Update; 
/** 
* @author gacl 
* 定義sql映射的接口,使用注解指明方法要執(zhí)行的SQL 
*/ 
public interface UserMapper_11 { 
//使用@Insert注解指明add方法要執(zhí)行的SQL 
@Insert("insert into users(name, age) values(#{name}, #{age})") 
public int add(User user); 
//使用@Delete注解指明deleteById方法要執(zhí)行的SQL 
@Delete("delete from users where id=#{id}") 
public int deleteById(int id); 
//使用@Update注解指明update方法要執(zhí)行的SQL 
@Update("update users set name=#{name},age=#{age} where id=#{id}") 
public int update(User user); 
//使用@Select注解指明getById方法要執(zhí)行的SQL 
@Select("select * from users where id=#{id}") 
public User getById(int id); 
//使用@Select注解指明getAll方法要執(zhí)行的SQL 
@Select("select * from users") 
public List<User> getAll(); 
} 

同時,需要在數(shù)據(jù)庫配置文件中添加所寫的接口,在conf.xml中添加如下語句,

<mapper class="com.edu.hpu.mapping.UserMapper_11"/>

OK,基本上已經(jīng)完成,這里給出測試類可以進行測試,

package com.edu.hpu.test; 
import java.util.List; 
import com.edu.hpu.domain.User; 
import com.edu.hpu.mapping.UserMapper_11; 
import com.edu.hpu.util.MyBatisUtil; 
import org.apache.ibatis.session.SqlSession; 
import org.junit.Test; 
/** 
* @author Administrator 
*對注解進行測試 
*/ 
public class Test3 { 
@Test 
public void testAdd(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
//得到UserMapper接口的實現(xiàn)類對象,UserMapper接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapper.class)動態(tài)構(gòu)建出來 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
User user = new User(); 
user.setName("大智若愚"); 
user.setAge(20); 
int add = mapper.add(user); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(add); 
} 
@Test 
public void testUpdate(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
//得到UserMapper接口的實現(xiàn)類對象,UserMapper接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapper.class)動態(tài)構(gòu)建出來 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
User user = new User(); 
user.setId(3); 
user.setName("大音希聲"); 
user.setAge(26); 
//執(zhí)行修改操作 
int retResult = mapper.update(user); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(retResult); 
} 
@Test 
public void testDelete(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
//得到UserMapper接口的實現(xiàn)類對象,UserMapper接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapper.class)動態(tài)構(gòu)建出來 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
//執(zhí)行刪除操作 
int retResult = mapper.deleteById(7); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(retResult); 
} 
@Test 
public void testGetUser(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(); 
//得到UserMapper接口的實現(xiàn)類對象,UserMapperI接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapper.class)動態(tài)構(gòu)建出來 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
//執(zhí)行查詢操作,將查詢結(jié)果自動封裝成User返回 
User user = mapper.getById(1); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(user); 
} 
@Test 
public void testGetAll(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(); 
//得到UserMapper接口的實現(xiàn)類對象,UserMapper接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapper.class)動態(tài)構(gòu)建出來 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
//執(zhí)行查詢操作,將查詢結(jié)果自動封裝成List<User>返回 
List<User> lstUsers = mapper.getAll(); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(lstUsers); 
} 
} 

以上所述是小編給大家介紹的mybatis實現(xiàn)對數(shù)據(jù)的增刪查改實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • springmvc實現(xiàn)文件上傳功能

    springmvc實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細介紹了springmvc實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java 多線程同步 鎖機制與synchronized深入解析

    Java 多線程同步 鎖機制與synchronized深入解析

    從尺寸上講,同步代碼塊比同步方法小。你可以把同步代碼塊看成是沒上鎖房間里的一塊用帶鎖的屏風隔開的空間
    2013-09-09
  • Java如何跳過https的ssl證書驗證詳解

    Java如何跳過https的ssl證書驗證詳解

    這篇文章主要介紹了Java跳過https的ssl證書驗證的解決思路,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面我們來深入學習下吧
    2019-06-06
  • 超詳細講解SpringBoot參數(shù)校驗實例

    超詳細講解SpringBoot參數(shù)校驗實例

    經(jīng)常需要提供接口與用戶交互(獲取數(shù)據(jù)、上傳數(shù)據(jù)等),由于這個過程需要用戶進行相關(guān)的操作,為了避免出現(xiàn)一些錯誤的數(shù)據(jù)等,一般需要對數(shù)據(jù)進行校驗,下面這篇文章主要給大家介紹了關(guān)于SpringBoot各種參數(shù)校驗的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • SpringCloud應用idea實現(xiàn)可相互調(diào)用的多模塊程序詳解

    SpringCloud應用idea實現(xiàn)可相互調(diào)用的多模塊程序詳解

    IDEA 全稱 IntelliJ IDEA,是java編程語言的集成開發(fā)環(huán)境。IntelliJ在業(yè)界被公認為最好的Java開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構(gòu)、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設計等方面的功能可以說是超常的
    2022-07-07
  • Spring Boot加密配置文件方法介紹

    Spring Boot加密配置文件方法介紹

    這篇文章主要介紹了SpringBoot加密配置文件,近期在對開發(fā)框架安全策略方面進行升級優(yōu)化,提供一些通用場景的解決方案,本文針對配置文件加密進行簡單的分享
    2023-01-01
  • 使用java獲取md5值的兩種方法

    使用java獲取md5值的兩種方法

    本篇文章是對使用java獲取md5值的兩種方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • java類加載器和類反射使用示例

    java類加載器和類反射使用示例

    這篇文章主要介紹了java類加載器和類反射使用示例,需要的朋友可以參考下
    2014-03-03
  • Java遠程調(diào)用Shell腳本并獲取輸出信息【推薦】

    Java遠程調(diào)用Shell腳本并獲取輸出信息【推薦】

    這篇文章主要介紹了Java遠程調(diào)用Shell腳本并獲取輸出信息,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 詳解Springboot之Logback的使用學習

    詳解Springboot之Logback的使用學習

    Logback是SpringBoot內(nèi)置的日志處理框架,你會發(fā)現(xiàn)spring-boot-starter其中包含了spring-boot-starter-logging,該依賴內(nèi)容就是Spring Boot默認的日志框架logback,本文詳細介紹了該框架 ,需要的朋友可以參考下
    2021-05-05

最新評論