国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

基于Mybatis實現(xiàn)CRUD操作過程解析(xml方式)

瀏覽:3日期:2023-10-21 19:11:27

1、環(huán)境搭建

1.1 表結(jié)構(gòu)

create table user ( id int primary key auto_increment, username varchar(20) not null, birthday date, sex char(1) default ’男’, address varchar(50));insert into user values (null, ’孫悟空’,’1980-10-24’,’男’,’花果山水簾洞’);insert into user values (null, ’白骨精’,’1992-11-12’,’女’,’白虎嶺白骨洞’);insert into user values (null, ’豬八戒’,’1983-05-20’,’男’,’福臨山云棧洞’);insert into user values (null, ’蜘蛛精’,’1995-03-22’,’女’,’?絲洞’);

1.2 創(chuàng)建項目

導(dǎo)入如下jar

mybatis框架包 數(shù)據(jù)庫驅(qū)動包 log4j日志包 junit單元測試包

1.3 準備配置文件

在src下準備配置文件: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> <!--配置數(shù)據(jù)庫連接參數(shù)--> <environments default='mybatis'> <environment id='mybatis'> <!--事務(wù)管理器--> <transactionManager type='JDBC'></transactionManager> <!--配置數(shù)據(jù)源--> <dataSource type='pooled'><property name='driver' value='com.mysql.jdbc.Driver'/><property name='url' value='jdbc:mysql:///test'/><property name='username' value='root'/><property name='password' value='root'/> </dataSource> </environment> </environments></configuration>

在 src 下準備配置文件:log4j.properties

# Global logging configurationlog4j.rootLogger=DEBUG, stdout

# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

2-增刪改查源碼

1.1 執(zhí)行結(jié)果

1.2 User類代碼

import java.sql.Date;/** 用戶實體類對象 */public class User { private Integer id; private String username; private Date birthday; private String sex; private String address; public User() { } public User(Integer id, String username, Date birthday, String sex, String address) { this.id = id; this.username = username; this.birthday = birthday; this.sex = sex; this.address = address; } public Integer getId() { return id; } public void setId(Integer 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; } @Override public String toString() { return 'User{' +'id=' + id +', username=’' + username + ’’’ +', birthday=' + birthday +', sex=’' + sex + ’’’ +', address=’' + address + ’’’ +’}’; }}

1.3 UserMapper接口代碼

package com.vg.dao;import com.vg.entity.User;import org.apache.ibatis.annotations.Param;import java.util.List;/** * 數(shù)據(jù)訪問層接口:對用戶進行增刪改查操作 */public interface UserMapper {/** * 添加用戶 */int addUser(User user);/** * 根據(jù)id刪除用戶 */void deleteUser(Integer id);/** * 通過id修改用戶信息 *//** * 修改用戶信息 */void updateUser(User user);/** * 查詢所有用戶 */List<User> findAllUsers();/** * 根據(jù)id查詢用戶 */User findUserById(int id);/** * 根據(jù)用戶名模糊查詢用戶 */List<User> findUsersByName(String username);/** * 根據(jù)姓名和性別查詢用戶數(shù)據(jù)(姓名使用模糊查詢) *//** * 根據(jù)用戶名稱模糊查詢用戶 */}}

1.4 UserMapper.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'><!-- 映射的作用:一個映射文件就對應(yīng)一個接口,一個接口可以有多個映射文件,一般是一對一關(guān)系。 mapper標簽的namespace屬性的作用:關(guān)聯(lián)接口,需要配置對應(yīng)接口的類全名字符串--><mapper namespace='com.vg.dao.UserMapper'> <!-- 完成接口映射配置文件UserMapper.xml的編寫:這個映射文件就相當于UserMapper接口實現(xiàn)類配置 --> <!--select標簽的作用:用來配置查詢要執(zhí)行的SQL語句 id屬性:關(guān)聯(lián)接口中的方法名 resultType屬性:設(shè)置方法返回的數(shù)據(jù)類型,如果是集合則配置集合元素的類型 --> <select resultType='User'> select * from user </select> <select parameterType='int' resultType='User'> select * from user where id = #{id}; </select> <select parameterType='string' resultType='User'> select *from user where username like #{username} </select> <insert parameterType='user' > insert into user values(null,#{username},#{birthday},#{sex},#{address}); </insert> <update parameterType='user'> update user set username = #{username}, birthday = #{birthday},sex = #{sex}, address = #{address} where id = #{id} </update> <delete parameterType='integer'> delete from user where id = #{id} </delete></mapper>

1.5 在主配置文件中加載接口映射文件

<mappers> <!--mapper標簽:一個該標簽就配置一個接口映射文件 resource屬性:配置映射文件的路徑,路徑分隔符使用 / : com/vg/dao/UserMapper.xml url:用于配置互聯(lián)網(wǎng)上的映射文件的路徑,比如:http://www.baidu.com/xxx.xml --> <!--<mapper resource='com/vg/dao/UserMapper.xml'></mapper>--> <package name='com.vg.dao'/></mappers>

1.6 測試類代碼

package com.vg.test;import com.vg.dao.UserMapper;import com.vg.entity.User;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.After;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.sql.Date;import java.util.List;/** * 測試類 */public class TestUserMapper {private static SqlSessionFactory sqlSessionFactory =null;private SqlSession sqlSession =null;private UserMapper userMapper =null;// 該方法在所有測試方法執(zhí)行之前執(zhí)行1次@BeforeClasspublic static void init() throws Exception {// 1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對InputStream in = Resources.getResourceAsStream('sqlMapConfig.xml');// 2. 實例化會話工廠創(chuàng)建類SqlSessionFactoryBuilder對象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// 3. 根據(jù)字節(jié)輸入流獲取SqlSessionFactory對象sqlSessionFactory = builder.build(in);}// 該方法會在每個測試方法執(zhí)行之前執(zhí)行1次@Beforepublic void before(){// 4. 獲取SqlSession對象,等價連接對象// true:事務(wù)自動提交,false:不自動提交,默認值sqlSession = sqlSessionFactory.openSession();// 5. 創(chuàng)建接口 實現(xiàn)類對象userMapper = sqlSession.getMapper(UserMapper.class);}/** * 測試方法:通過用戶名模糊查詢用戶 */@Testpublic void testAddUser() throws Exception{// 1. 獲得接口代理對象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 2. 創(chuàng)建User對象User u = new User();u.setUsername('如來佛祖111');u.setBirthday(Date.valueOf('1980-01-20'));u.setAddress('西天靈山');u.setSex('男');// 3. 保存用戶信息int row = userMapper.addUser(u);System.out.println('row = ' + row);// 4. 手動提交事務(wù)sqlSession.commit();}/** * 測試方法:通過用戶名模糊查詢用戶 */@Testpublic void testFindUserByName() throws Exception{List<User> userList = userMapper.findUsersByName('%精%');for (User user : userList) {System.out.println(user);}}/** * 測試方法:查詢所有用戶 */@Testpublic void testFindAllUsers() throws Exception{List<User> userList = userMapper.findAllUsers();for (User user : userList) {System.out.println(user);}}/** * 根據(jù)id查詢用戶 * @throws Exception */@Testpublic void testFindUserById()throws Exception{// 6. 調(diào)用接口的方法根據(jù)id查詢用戶User user = userMapper.findUserById(1);System.out.println('user = ' + user);}@Testpublic void testUpdateUser()throws Exception{// 創(chuàng)建用戶對象User user = new User(6,'牛魔王',Date.valueOf('1998-02-20'),'妖','牛魔洞');// 更新用戶userMapper.updateUser(user);// 提交事務(wù)sqlSession.commit();}@Testpublic void testDeleteUser()throws Exception{// 1. 獲得接口代理對象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 2. 根據(jù)id刪除用戶userMapper.deleteUser(6);// 3. 提交事務(wù)sqlSession.commit();}@Afterpublic void after() {// 7. 關(guān)閉會話,釋放資源。sqlSession.close();}}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

相關(guān)文章:
主站蜘蛛池模板: 汨罗市| 鹰潭市| 武隆县| 深圳市| 临夏市| 东台市| 泰安市| 阜南县| 建瓯市| 鹤岗市| 阿拉善盟| 唐山市| 屏山县| 岳池县| 曲周县| 沙坪坝区| 民县| 宁南县| 金华市| 北海市| 通榆县| 军事| 昔阳县| 凭祥市| 巴中市| 临高县| 百色市| 临湘市| 墨竹工卡县| 清原| 左云县| 昌黎县| 宜章县| 武清区| 凌云县| 明水县| 新田县| 丁青县| 连城县| 漳浦县| 阳新县|