亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前期準(zhǔn)備

新建java工程或java wweb工程,需要導(dǎo)入以下的包,

基本工作已經(jīng)完成,接下來(lái)開(kāi)始進(jìn)入正題。

新建實(shí)體類

新建與數(shù)據(jù)庫(kù)表對(duì)應(yīng)的實(shí)體類

package com.edu.hpu.domain; 
/** 
* @author Administrator 
*user表所對(duì)應(yīng)的實(shí)體類 
*/ 
public class User { 
//實(shí)體類的屬性和表的字段名稱一一對(duì)應(yīng) 
private int id; 
private String name; 
private int age; 
//對(duì)屬性進(jìn)行封裝 
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對(duì)象在執(zhí)行完SQL之后會(huì)自動(dòng)提交事務(wù) 
* false 表示創(chuàng)建的SqlSession對(duì)象在執(zhí)行完SQL之后不會(huì)自動(dòng)提交事務(wù),這時(shí)就需要我們手動(dòng)調(diào)用sqlSession.commit()提交事務(wù) 
* @return SqlSession 
*/ 
public static SqlSession getSqlSession(boolean isAutoCommit) { 
return getSqlSessionFactory().openSession(isAutoCommit); 
} 
} 

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

通過(guò)配置文件進(jìn)行操作

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

<?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ù)庫(kù)連接信息 --> 
<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> 
<!-- 注冊(cè)u(píng)serMapper.xml文件, 
userMapper.xml位于com.edu.hpu.mapping這個(gè)包下,所以resource寫(xiě)成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ù)庫(kù)語(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.edu.hpu.mapping.userMapper"> 
<!-- 在select標(biāo)簽中編寫(xiě)查詢的SQL語(yǔ)句, 設(shè)置select標(biāo)簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復(fù) 
使用parameterType屬性指明查詢時(shí)使用的參數(shù)類型,resultType屬性指明查詢返回的結(jié)果集類型 
resultType="com.edu.hpu.domain.User"就表示將查詢結(jié)果封裝成一個(gè)User類的對(duì)象返回 
User類就是users表所對(duì)應(yīng)的實(shí)體類 
--> 
<!-- 
根據(jù)id查詢得到一個(gè)user對(duì)象 
--> 
<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> 

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

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的標(biāo)識(shí)字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, 
* addUser是insert標(biāo)簽的id屬性值,通過(guò)insert標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.addUser";//映射sql的標(biāo)識(shí)字符串 
User user = new User(); 
user.setName("新增用戶小黃"); 
user.setAge(20); 
//執(zhí)行插入操作 
int retResult = sqlSession.insert(statement,user); 
//手動(dòng)提交事務(wù) 
//sqlSession.commit(); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(retResult); 
} 
@Test 
public void testUpdate(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
/** 
* 映射sql的標(biāo)識(shí)字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, 
* updateUser是update標(biāo)簽的id屬性值,通過(guò)update標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.updateUser";//映射sql的標(biāo)識(shí)字符串 
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的標(biāo)識(shí)字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, 
* deleteUser是delete標(biāo)簽的id屬性值,通過(guò)delete標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.deleteUser";//映射sql的標(biāo)識(shí)字符串 
//執(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的標(biāo)識(shí)字符串, 
* com.edu.hpu.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, 
* getAllUsers是select標(biāo)簽的id屬性值,通過(guò)select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL 
*/ 
String statement = "com.edu.hpu.mapping.userMapper.getAllUsers";//映射sql的標(biāo)識(shí)字符串 
//執(zhí)行查詢操作,將查詢結(jié)果自動(dòng)封裝成List<User>返回 
List<User> lstUsers = sqlSession.selectList(statement); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(lstUsers); 
} 
} 

通過(guò)注解進(jìn)行操作

通過(guò)注解進(jìn)行操作需要寫(xiě)一個(gè)接口,但是不必實(shí)現(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í),需要在數(shù)據(jù)庫(kù)配置文件中添加所寫(xiě)的接口,在conf.xml中添加如下語(yǔ)句,

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

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

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 
*對(duì)注解進(jìn)行測(cè)試 
*/ 
public class Test3 { 
@Test 
public void testAdd(){ 
SqlSession sqlSession = MyBatisUtil.getSqlSession(true); 
//得到UserMapper接口的實(shí)現(xiàn)類對(duì)象,UserMapper接口的實(shí)現(xiàn)類對(duì)象由sqlSession.getMapper(UserMapper.class)動(dòng)態(tài)構(gòu)建出來(lái) 
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接口的實(shí)現(xiàn)類對(duì)象,UserMapper接口的實(shí)現(xiàn)類對(duì)象由sqlSession.getMapper(UserMapper.class)動(dòng)態(tài)構(gòu)建出來(lái) 
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接口的實(shí)現(xiàn)類對(duì)象,UserMapper接口的實(shí)現(xiàn)類對(duì)象由sqlSession.getMapper(UserMapper.class)動(dòng)態(tài)構(gòu)建出來(lái) 
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接口的實(shí)現(xiàn)類對(duì)象,UserMapperI接口的實(shí)現(xiàn)類對(duì)象由sqlSession.getMapper(UserMapper.class)動(dòng)態(tài)構(gòu)建出來(lái) 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
//執(zhí)行查詢操作,將查詢結(jié)果自動(dòng)封裝成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接口的實(shí)現(xiàn)類對(duì)象,UserMapper接口的實(shí)現(xiàn)類對(duì)象由sqlSession.getMapper(UserMapper.class)動(dòng)態(tài)構(gòu)建出來(lái) 
UserMapper_11 mapper = sqlSession.getMapper(UserMapper_11.class); 
//執(zhí)行查詢操作,將查詢結(jié)果自動(dòng)封裝成List<User>返回 
List<User> lstUsers = mapper.getAll(); 
//使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession 
sqlSession.close(); 
System.out.println(lstUsers); 
} 
} 

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

相關(guān)文章

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

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

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

    Java 多線程同步 鎖機(jī)制與synchronized深入解析

    從尺寸上講,同步代碼塊比同步方法小。你可以把同步代碼塊看成是沒(méi)上鎖房間里的一塊用帶鎖的屏風(fēng)隔開(kāi)的空間
    2013-09-09
  • Java如何跳過(guò)https的ssl證書(shū)驗(yàn)證詳解

    Java如何跳過(guò)https的ssl證書(shū)驗(yàn)證詳解

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

    超詳細(xì)講解SpringBoot參數(shù)校驗(yàn)實(shí)例

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

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

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

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

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

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

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

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

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

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

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

    詳解Springboot之Logback的使用學(xué)習(xí)

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

最新評(píng)論