IDEA第一个mybatis程序 mybatis增删查改操作 mybatis的map模糊查询
連接數(shù)據(jù)庫(kù):
端口號(hào):
打開IDEA:
注意這個(gè)URL:jdbc:mysql://localhost:3308
對(duì)應(yīng)mybatis核心配置的url;
新建IDEA的MAVEN項(xiàng)目
目錄:
數(shù)據(jù)庫(kù):
打開可視化管理工具:
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> <!-- 每一個(gè)mapper.xml都需要在mybatis的核心配置文件中注冊(cè)!!--><mapper resource="com/kuang/dao/UserMapper.xml"/></mappers> </configuration>select 標(biāo)簽中的 select * from data1.user where id = #{id}是查詢語(yǔ)句。
{id} : MyBatis SQL 中使用預(yù)編譯參數(shù)的一種方式,大括號(hào)中的id 是傳入的參數(shù)名。
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>當(dāng)Mapper 接口和XML 文件關(guān)聯(lián)的時(shí)候**,命名空間namespace 的值就需要配置成接口的全限定名稱,**例如UserMapper 接口對(duì)應(yīng)的com.kuang.dao.UserDao, MyBatis 內(nèi)部就是通過(guò)這個(gè)值將接口和XML 關(guān)聯(lián)起來(lái)的。
resultType :定義了當(dāng)前查詢的返回值類型,此處就是指實(shí)體類Country ,前面配置中提到的別名主要用于這里,如果沒(méi)有設(shè)置別名,此處就需要寫成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中,這樣初始時(shí)就會(huì)加載InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}//既然有了sqlSessionFactory 顧名思義,我們可以從中獲得sqlSession的實(shí)例了//SqlSession完全包含了面向數(shù)據(jù)執(zhí)行SQL命令的所有方法public static SqlSession getSqlSession(){// SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSessionFactory.openSession();} }測(cè)試類:
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對(duì)象SqlSession sqlSession = MybatisUtils.getSqlSession();//執(zhí)行SQLUserDao mapper = sqlSession.getMapper(UserDao.class);List<User> userList = mapper.getUserlist();for (User user : userList) {System.out.println(user);}sqlSession.close();//關(guān)閉}@Testpublic void getUserById(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao dao = sqlSession.getMapper(UserDao.class);//獲得接口User user = dao.getUserById(1);System.out.println(user);sqlSession.close();} }測(cè)試test()結(jié)果:
查找id為1的數(shù)據(jù):
插入:
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>測(cè)試類中增加:
@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();//增刪改需要提交事務(wù)sqlSession.close();}查看剛剛的表已經(jīng)增加了一個(gè):
修改:
測(cè)試類:
@Testpublic void updateu(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao updated = sqlSession.getMapper(UserDao.class);updated.updateu(new User(3,"婧婧","14231"));sqlSession.commit();//提交事務(wù)sqlSession.close();}接口中增加:
void updateu(User user);//xml文件update中對(duì)應(yīng)的id是方法名xml中增加:
<update id="updateu" parameterType="com.kuang.pojo.User">update data1.user set name=#{name},pwd = #{pwd} where id = #{id};</update>
表發(fā)生了修改:
刪除:
測(cè)試類:
@Testpublic void deleteuser(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao deleteuser = sqlSession.getMapper(UserDao.class);deleteuser.deleteuser(1);sqlSession.commit();//提交事務(wù)sqlSession.close();}xml文件修改:
<delete id="deleteuser" parameterType="int">delete from data1.user where id = #{id};</delete>UserDao接口:
int deleteuser(int id);運(yùn)行之后查看表發(fā)現(xiàn)已經(jīng)刪除了id為1的數(shù)據(jù):
利用萬(wàn)能map插入數(shù)據(jù):
resultMap 是一種很重要的配置結(jié)果映射的方法,
id :必填,并且唯一。在select 標(biāo)簽中, resultMap 指定的值即為此處id 所設(shè)置的值。resultMap 包含的所有屬性如下。
? type :必填,用于配置查詢列所映射到的Java 對(duì)象類型。
extends : 選填,可以配置當(dāng)前的resultMap 繼承自其他的re sultMap ,屬性值為
繼承resultMap 的id 。
autoMapping :選填,可選值為true 或false ,用于配置是否啟用非映射字段(沒(méi)有在resultMap 中配置的字段〉的自動(dòng)映射功能, 該配置可以覆蓋全局的
autoMappingBehavior 配置。
測(cè)試類:
xml:
<insert id="adduser2" parameterType="map">insert into data1.user(id,name,pwd) values (#{userid},#{username},#{password});</insert>UserDao.java:
//用map傳對(duì)象int adduser2(Map<String,Object> map);運(yùn)行測(cè)試類后查看user表
注意:
假設(shè)實(shí)體類,或者數(shù)據(jù)庫(kù)中的表,字段或者參數(shù)過(guò)多,我們應(yīng)當(dāng)考慮使用Map!
模糊查詢
測(cè)試類
@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);運(yùn)行:
注意:要傳遞通配符,即%
故下面的代碼應(yīng)該注意:
也可以在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 使用,也可以配合注解來(lái)使用。XML 可以單獨(dú)使用,但是注解必須在接口中使用。
總結(jié)
以上是生活随笔為你收集整理的IDEA第一个mybatis程序 mybatis增删查改操作 mybatis的map模糊查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【python笔记】python模块 d
- 下一篇: mybatis的mapper.xml文件