使用maven项目配置并使用mybatis (xml开发)
使用maven项目配置并使用mybatis (xml开发)
1、首先我们使用maven添加依赖
<dependencies> <!-- Junit测试工具 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> <scope>test</scope> </dependency> <!-- MyBatis核心Jar包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <!-- MySql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <!-- Lombok工具 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> <!-- Log4j测试工具 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
2、配置数据库信息
创建数据库配置文件db.properties
#数据库驱动
driver=com.mysql.jdbc.Driver
#数据地址端口信息 url=jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false&useUnicode=true&characterEncoding=UTF-8
#数据库用户名 username=yourUserName
#密码 password=yourPassword
3、创建mybatis核心配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 <!-- 导入数据库配置信息--> 6 <properties resource="db.properties"/> 7 <!-- 配置开发环境信息 --> 8 <environments default="development"> 9 <environment id="development"> 10 <!-- 使用JDBC事务管理器,目前由MyBatis管理 --> 11 <transactionManager type="JDBC"/> 12 <!-- 配置DataSource标准数据源,目前由MyBatis管理 --> 13 <dataSource type="POOLED"> 14 <property name="driver" value="${driver}"/> 15 <property name="url" value="${url}"/> 16 <property name="username" value="${username}"/> 17 <property name="password" value="${password}"/> 18 </dataSource> 19 20 </environment> 21 22 </environments> 23 <!-- 每一个Mapper.xml都需要在MyBatis核心配置文件中注册--> 24 <mappers> 25 <mapper resource="com/qi/dao/StudentMapper.xml" /> 26 </mappers> 27 28 29 </configuration>
4、创建实体
以学生为例子
1 package com.qi.entity; 2 3 public class Student { 4 private Integer id;//学生id 5 private String sName;//学生姓名 6 private Integer age;//学生年龄 7 private String addres;//学生地址 8 9 10 public Student() { 11 } 12 13 public Student(Integer id, String sName, Integer age, String addres ) { 14 this.id = id; 15 this.sName = sName; 16 this.age = age; 17 this.addres = addres; 18 } 19 20 /** 21 * 获取 22 * @return id 23 */ 24 public Integer getId() { 25 return id; 26 } 27 28 /** 29 * 设置 30 * @param id 31 */ 32 public void setId(Integer id) { 33 this.id = id; 34 } 35 36 /** 37 * 获取 38 * @return sName 39 */ 40 public String getSName() { 41 return sName; 42 } 43 44 /** 45 * 设置 46 * @param sName 47 */ 48 public void setSName(String sName) { 49 this.sName = sName; 50 } 51 52 /** 53 * 获取 54 * @return age 55 */ 56 public Integer getAge() { 57 return age; 58 } 59 60 /** 61 * 设置 62 * @param age 63 */ 64 public void setAge(Integer age) { 65 this.age = age; 66 } 67 68 /** 69 * 获取 70 * @return addres 71 */ 72 public String getAddres() { 73 return addres; 74 } 75 76 /** 77 * 设置 78 * @param addres 79 */ 80 public void setAddres(String addres) { 81 this.addres = addres; 82 } 83 84 public String toString() { 85 return "Student{id = " + id + ", sName = " + sName + ", age = " + age + ", addres = " + addres + "}"; 86 } 87 }
5、创建Dao层的接口
1 package com.qi.dao; 2 3 import com.qi.entity.Student; 4 5 import java.util.List; 6 7 public interface StudentDao { 8 /** 9 * 根据学生id查询学生信息 10 * @param id 11 * @return 12 */ 13 Student selectById(Integer id); 14 15 /** 16 * 插入学生信息 17 * @param student 18 * @return 19 */ 20 int insertStudent(Student student); 21 22 /** 23 * 根据id删除学生信息 24 * @param id 25 * @return 26 */ 27 int deleteById(Integer id); 28 29 /** 30 * 修改学生信息 31 * @param student 32 * @return 33 */ 34 int infoUpdate(Student student); 35 }
6、写sql
在resources文件夹下创建Mapper 映射
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.qi.dao.StudentDao"> 4 <insert id="insertStudent" parameterType="com.qi.entity.Student"> 5 INSERT INTO student(sName,age,addres) VALUES (#{sName},#{age},#{addres}); 6 </insert> 7 8 <delete id="deleteById" parameterType="Integer"> 9 DELETE FROM student WHERE id=#{id}; 10 </delete> 11 12 <update id="infoUpdate" parameterType="com.qi.entity.Student"> 13 UPDATE student SET sName=#{sName},age=#{age},addres=#{addres} WHERE id = #{id}; 14 </update> 15 16 <select id="selectById" resultType="com.qi.entity.Student" parameterType="Integer"> 17 SELECT * FROM student WHERE id = #{id} 18 </select> 19 </mapper>
7、编写mybatisUtils类
1 package com.qi.untils; 2 3 import org.apache.ibatis.io.Resources; 4 import org.apache.ibatis.session.SqlSession; 5 import org.apache.ibatis.session.SqlSessionFactory; 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 7 8 import java.io.IOException; 9 import java.io.InputStream; 10 11 public class MybatisUntils { 12 private static SqlSessionFactory sqlSessionFactory; 13 static { 14 try { 15 //获取 SqlSessionFactory对象 16 String resource = "mybatis-config.xml"; 17 InputStream inputStream = Resources.getResourceAsStream(resource); 18 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 19 } catch (IOException e) { 20 e.printStackTrace(); 21 } 22 } 23 //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。 24 // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。 25 public static SqlSession getSqlSession(){ 26 return sqlSessionFactory.openSession(); 27 } 28 29 }
8测试
package com.qi; import com.qi.dao.StudentDao; import com.qi.entity.Student; import com.qi.untils.MybatisUntils; 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; import java.util.List; public class Main { public static void main(String[] args) { // 创建 SqlSession SqlSession sqlSession = MybatisUntils.getSqlSession(); // 获取 Mapper 接口的代理对象 StudentDao studentDao = sqlSession.getMapper(StudentDao.class); // 执行查询 Student student = studentDao.selectById(1); System.out.println(student); // 执行插入 int num = studentDao.insertStudent(student); sqlSession.commit(); System.out.println(num); //执行删除 num = studentDao.deleteById(86); sqlSession.commit(); System.out.println(num); student.setAddres("上述福"); //执行修改 num = studentDao.infoUpdate(student); sqlSession.commit(); System.out.println(num); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!