日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis学习教程(二)初级的增、删、查、改

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis学习教程(二)初级的增、删、查、改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

本文主要從一個基礎實例,講解Mybatis的實現,已經每一步的詳細講解。我會將項目共享在百度云盤,文章最后!


1、項目結構


2、項目配置

?2.1 配置SqlMapConfig.xml

? ? ? ? 根據Mybatis架構圖, 我們第一步應該配置SqlMapConfig,主要涉及到數據源的一些配置。架構請參考教材1

<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!--與spring整個后環境配置將廢除--><environments default="development"><environment id="development"><!--使用JDBC事務管理--><transactionManager type="JDBC"></transactionManager><!--數據庫連接池--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertTonull"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!--加載mapper--><mappers><mapper resource="mapper/UserMapper.xml"/></mappers> </configuration>
?2.1 配置sqlsessionFactory.xml

在配置SqlMapConfig中我們看到userMapper.xml,下面詳細講解如果配置sqlsessionFactory、sqlsession、mapperStatement、Executor

2.1.1Orm數據實體映射配置

我們每一個對象映射到關系型數據的一些操作,mybatis也是一種orm模型,自然免不了映射,我們以Mysql的User數據表為例子

數據庫:user表

Java對象:User

public class User {private int id;private String username;// 用戶姓名private String sex;// 性別private Date birthday;// 生日private String address;// 地址 //自己添加get set方法 } 2.1.1mapperStatement配置

? 我們的以一個User為例,創建 UserMapper.xml配置文件。把一個sql稱為一個statement,這里很多mapperStatement,所以這映射文件里面,把對User的操作的sql都放在里面,即構建了mapperStatement。

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--命名空間:分類管理sql隔離,方便管理--> <mapper namespace="test"><!--id標示一個sql語句,一個Statement,封裝為一個MapperStatement--><!--parameterType:傳入參數類型;resultType:輸出結果類型,指定映射的pojo--><!--#{}標示一個占位符,--><!--查詢用戶--><select id="getUserById" parameterType="int" resultType="com.ycy.mybatis.module.User">SELECT * FROM USER WHERE id=#{id}</select><select id="findUserByName" parameterType="java.lang.String" resultType="com.ycy.mybatis.module.User">SELECT * FROM USER WHERE username LIKE '%'||#{username}||'%'</select><!--新增用戶--><insert id="insertUser" parameterType="com.ycy.mybatis.module.User" ><!--插入值之后返回主鍵值--><selectKey resultType="int" order="AFTER" keyProperty="id">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO USER (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})</insert><!--刪除用戶--><delete id="deleteUser" parameterType="int">DELETE FROM USER WHERE id=#{id}</delete><!--更新用戶--><update id="updateUser" parameterType="com.ycy.mybatis.module.User">UPDATE USER SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id=#{id}</update> </mapper> 2.1.1sqlsessionFactory創建sqlsession

? ? ? ?我們必須知道,所有的sql配置都是需要一個sqlsession來執行會話操作,因為session本身意思就是一次會話。需要sqlsession就必須構建一個sqlsessionFactory,下面我們用兩種方式來建立會話,進行數據庫操作。

2.1.1.1通過junit測試操作會話

? 我們直接在junit中讀取sqlMapConfig.xml,調用會話

測試類:MybatisFrist import com.ycy.mybatis.module.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.Before; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.List;/*** Created by Administrator on 2015/8/28 0028.*/ public class MybatisFrist {private SqlSessionFactory sqlSessionFactory = null;//創建工廠@Beforepublic void before() throws IOException {//創建會話工廠String resource = "SqlMapConfig.xml";InputStream in = null;in = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);}@Testpublic void testGet() {//1通過sqlsessionfactory創建sqlsessionSqlSession sqlSession = sqlSessionFactory.openSession();//2通過sqlsession操作數據庫User user = sqlSession.selectOne("test.getUserById", 1);System.out.println(user.getUsername());sqlSession.close();}@Testpublic void testSelect() {//1通過sqlsessionfactory創建sqlsessionSqlSession sqlSession = sqlSessionFactory.openSession();//2通過sqlsession操作數據庫List<User> userList = sqlSession.selectList("test.findUserByName", "小");System.out.println(userList.size());for (User user : userList) {System.out.println(user.getUsername());}sqlSession.close();}@Testpublic void testInsert() {User user = new User();user.setUsername("楊長用");user.setAddress("重慶");user.setBirthday(new Date());user.setSex("1");//1通過sqlsessionfactory創建sqlsessionSqlSession sqlSession = sqlSessionFactory.openSession();//2通過sqlsession操作數據庫sqlSession.insert("test.insertUser", user);sqlSession.commit();sqlSession.close();System.out.println("--------" + user.getId());}@Testpublic void testDel() {//1通過sqlsessionfactory創建sqlsessionSqlSession sqlSession = sqlSessionFactory.openSession();//2通過sqlsession操作數據庫sqlSession.insert("test.deleteUser", 27);sqlSession.commit();sqlSession.close();}@Testpublic void testUpdate() {User user = new User();user.setUsername("楊長用修改");user.setAddress("重慶");user.setBirthday(new Date());user.setSex("1");user.setId(27);//1通過sqlsessionfactory創建sqlsessionSqlSession sqlSession = sqlSessionFactory.openSession();//2通過sqlsession操作數據庫sqlSession.insert("test.updateUser", user);sqlSession.commit();sqlSession.close();System.out.println("--------" + user.getId());} } 2.1.1.2通過接口的方式操作會話

請注意以上直接讀取文件的方式,與通過接口方式的區別。我們只是把操作封裝了一下,因為實際項目我們不可能寫硬編碼(直接寫死參數值),仍然用junit測試。

Java對象:UserService

public interface UserService {public User getUserById(int id) throws Exception;public List<User> findUserByName(String name) throws Exception;public void insertUser(User user) throws Exception; } Java對象:UserService

package com.ycy.mybatis.dao.impl;import com.ycy.mybatis.dao.UserService; import com.ycy.mybatis.module.User; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;/*** Created by Administrator on 2015/8/31 0031.*/ public class UserServiceImpl implements UserService {private SqlSessionFactory sqlSessionFactory;public UserServiceImpl(SqlSessionFactory sqlSessionFactory){this.sqlSessionFactory=sqlSessionFactory;}@Overridepublic User getUserById(int id) throws Exception {SqlSession sqlSession=sqlSessionFactory.openSession();User user= sqlSession.selectOne("test.getUserById", id);sqlSession.close();return user;}@Overridepublic List<User> findUserByName(String name) throws Exception {SqlSession sqlSession=sqlSessionFactory.openSession();List<User> userList= sqlSession.selectList("test.findUserByName", name);sqlSession.close();return userList;}@Overridepublic void insertUser(User user) throws Exception {SqlSession sqlSession=sqlSessionFactory.openSession();//2通過sqlsession操作數據庫sqlSession.insert("test.insertUser", user);sqlSession.commit();sqlSession.close();} }

測試類:MybatisTest2 由于篇幅關系,我們只做根據Id查詢用戶

package com.ycy.mybatis.test;import com.ycy.mybatis.dao.impl.UserServiceImpl; import com.ycy.mybatis.module.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.io.InputStream;/*** Created by Administrator on 2015/8/31 0031.*/ public class MybatisTest2 {private SqlSessionFactory sqlSessionFactory = null;@Beforepublic void before() throws IOException {String resource="SqlMapConfig.xml";InputStream in =Resources.getResourceAsStream(resource);sqlSessionFactory= new SqlSessionFactoryBuilder().build(in);}@Testpublic void testGet() throws Exception {UserServiceImpl userService=new UserServiceImpl(sqlSessionFactory);User user= userService.getUserById(1);System.out.println(user.getUsername());} } 輸出結果:



如有疑問:qq群:78275755(目前木有人,來啦更好)
本項目1-5章 初級教程 項目百度分享盤: http://pan.baidu.com/s/1o63SUaI

總結

以上是生活随笔為你收集整理的mybatis学习教程(二)初级的增、删、查、改的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。