IDEA第一个mybatis程序 mybatis增删查改操作 mybatis的map模糊查询
連接數據庫:
端口號:
打開IDEA:
注意這個URL:jdbc:mysql://localhost:3308
對應mybatis核心配置的url;
新建IDEA的MAVEN項目
目錄:
數據庫:
打開可視化管理工具:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <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>org.example</groupId><artifactId>twoone</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>mybatis-01</module></modules> <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency> </dependencies><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties> <build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources> </build> </project>核心配置:mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!--核心配置文件--> <!DOCTYPE configurationPUBLIC "-//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"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3308/data1?useSSL=true&userUnicode=true& characterEncoding=UTF-8"/><property name="username" value="heziyi"/><property name="password" value="123456"/></dataSource></environment></environments><mappers> <!-- 每一個mapper.xml都需要在mybatis的核心配置文件中注冊!!--><mapper resource="com/kuang/dao/UserMapper.xml"/></mappers> </configuration>select 標簽中的 select * from data1.user where id = #{id}是查詢語句。
{id} : MyBatis SQL 中使用預編譯參數的一種方式,大括號中的id 是傳入的參數名。
UserDao.java:
package com.kuang.dao; import com.kuang.pojo.User;import java.util.List;public interface UserDao {List<User> getUserlist();User getUserById(int id);}Usemapper.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.kuang.dao.UserDao"><select id="getUserlist" resultType="com.kuang.pojo.User" >select * from data1.user</select><select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">select * from data1.user where id = #{id}</select> </mapper>當Mapper 接口和XML 文件關聯的時候**,命名空間namespace 的值就需要配置成接口的全限定名稱,**例如UserMapper 接口對應的com.kuang.dao.UserDao, MyBatis 內部就是通過這個值將接口和XML 關聯起來的。
resultType :定義了當前查詢的返回值類型,此處就是指實體類Country ,前面配置中提到的別名主要用于這里,如果沒有設置別名,此處就需要寫成resultType=com.kuang.pojo.User
pojo.user:
package com.kuang.pojo;public class User {private int id;private String name;private String pwd;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 String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';} }utils下的MyBatistutils:
package com.kuang.utils;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 java.io.IOException; import java.io.InputStream;//sqlSessionFactory --> sqlsession public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory ;static {try {String resource = "mybatis-config.xml";//放在static中,這樣初始時就會加載InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}//既然有了sqlSessionFactory 顧名思義,我們可以從中獲得sqlSession的實例了//SqlSession完全包含了面向數據執行SQL命令的所有方法public static SqlSession getSqlSession(){// SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSessionFactory.openSession();} }測試類:
package com.kuang;import com.kuang.dao.UserDao; import com.kuang.pojo.User; import com.kuang.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test;import java.util.List;public class UserDaotest {@Testpublic void test() {//第一步:獲得sqlSession對象SqlSession sqlSession = MybatisUtils.getSqlSession();//執行SQLUserDao mapper = sqlSession.getMapper(UserDao.class);List<User> userList = mapper.getUserlist();for (User user : userList) {System.out.println(user);}sqlSession.close();//關閉}@Testpublic void getUserById(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao dao = sqlSession.getMapper(UserDao.class);//獲得接口User user = dao.getUserById(1);System.out.println(user);sqlSession.close();} }測試test()結果:
查找id為1的數據:
插入:
UserDao接口中增加一句:
int adduser(User user);在xml中增加:
<insert id="adduser" parameterType="com.kuang.pojo.User" >insert into data1.user(id,name ,pwd) values (#{id},#{name},#{pwd});</insert>測試類中增加:
@Testpublic void adduser(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao addd = sqlSession.getMapper(UserDao.class);int count = addd.adduser(new User(3,"哈哈","14231"));if(count > 0){System.out.println("nice");}sqlSession.commit();//增刪改需要提交事務sqlSession.close();}查看剛剛的表已經增加了一個:
修改:
測試類:
@Testpublic void updateu(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao updated = sqlSession.getMapper(UserDao.class);updated.updateu(new User(3,"婧婧","14231"));sqlSession.commit();//提交事務sqlSession.close();}接口中增加:
void updateu(User user);//xml文件update中對應的id是方法名xml中增加:
<update id="updateu" parameterType="com.kuang.pojo.User">update data1.user set name=#{name},pwd = #{pwd} where id = #{id};</update>
表發生了修改:
刪除:
測試類:
@Testpublic void deleteuser(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao deleteuser = sqlSession.getMapper(UserDao.class);deleteuser.deleteuser(1);sqlSession.commit();//提交事務sqlSession.close();}xml文件修改:
<delete id="deleteuser" parameterType="int">delete from data1.user where id = #{id};</delete>UserDao接口:
int deleteuser(int id);運行之后查看表發現已經刪除了id為1的數據:
利用萬能map插入數據:
resultMap 是一種很重要的配置結果映射的方法,
id :必填,并且唯一。在select 標簽中, resultMap 指定的值即為此處id 所設置的值。resultMap 包含的所有屬性如下。
? type :必填,用于配置查詢列所映射到的Java 對象類型。
extends : 選填,可以配置當前的resultMap 繼承自其他的re sultMap ,屬性值為
繼承resultMap 的id 。
autoMapping :選填,可選值為true 或false ,用于配置是否啟用非映射字段(沒有在resultMap 中配置的字段〉的自動映射功能, 該配置可以覆蓋全局的
autoMappingBehavior 配置。
測試類:
xml:
<insert id="adduser2" parameterType="map">insert into data1.user(id,name,pwd) values (#{userid},#{username},#{password});</insert>UserDao.java:
//用map傳對象int adduser2(Map<String,Object> map);運行測試類后查看user表
注意:
假設實體類,或者數據庫中的表,字段或者參數過多,我們應當考慮使用Map!
模糊查詢
測試類
@Testpublic void getuserlike(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao getuser2 = sqlSession.getMapper(UserDao.class); List<User> userList = getuser2.getuserlike("%梁%"); for (User user:userList){System.out.println(user); }sqlSession.close();}xml:
<select id="getuserlike" resultType="com.kuang.pojo.User">select * from data1.user where name like #{value}</select>接口:
List<User> getuserlike(String name);運行:
注意:要傳遞通配符,即%
故下面的代碼應該注意:
也可以在Sql拼接中使用通配符 即改成在xml中寫上:
<select id="getuserlike" resultType="com.kuang.pojo.User">select * from data1.user where name like "%"#{value}"%"</select>上面這句話改為:
List<User> userList = getuser2.getuserlike("梁");接口可以配合XML 使用,也可以配合注解來使用。XML 可以單獨使用,但是注解必須在接口中使用。
總結
以上是生活随笔為你收集整理的IDEA第一个mybatis程序 mybatis增删查改操作 mybatis的map模糊查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【python笔记】python模块 d
- 下一篇: mybatis的mapper.xml文件