Mybatis 入门实战 一 增删改查

本是古典 何须时尚 2022-05-30 11:45 364阅读 0赞

Mybatis 入门实战 一 用mybatis 实现对数据库的基本的CRUD操作

比较操蛋的事是这些东西都是原来会的,后来忙着做别的东西,就把这块忘了,当时还是小白一枚,所以把,今天就把它详细的写出来,省着以后自己忘了可哪找资料,这篇文章就是直接教你怎么用Mybatis,至于里面配置文件里的标签都是干啥的,这个看情况吧注解能看懂就看,看不懂就自己百度,以后回来我在看到这篇文章时候,觉得应该加啥在加啥吧,看不懂的留言,然后我再改。有助于你理解Mybatis的机制,不涉及Spring的整合,单纯的用mybatis

  1. 环境准备:
  2. jar包:
  3. jdk 1.7以上
  4. mysql驱动
  5. mybatis jar
  6. 我一般找jar包都去下面这个链接

点击这里 maven repository

  1. 开发工具:eclipse,navicat mysql数据库

1.0 建表 表名字t

这里写图片描述

2.0编写mybatis 配置文件 Configuration.xml 内容如下

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <typeAliases>
  5. <!-- //JAVA类对应的别名 -->
  6. <typeAlias alias="T" type="com.ccut.DAO.T"/>
  7. </typeAliases>
  8. <environments default="development">
  9. <environment id="development">
  10. <transactionManager type="JDBC"/>
  11. <dataSource type="POOLED">
  12. <!-- //设置驱动 -->
  13. <property name="driver" value="com.mysql.jdbc.Driver"/>
  14. <!-- //链接 -->
  15. <property name="url" value="jdbc:mysql://localhost:3306/xyd" />
  16. <!-- //用户名 -->
  17. <property name="username" value="root"/>
  18. <!-- //密码 -->
  19. <property name="password" value="xuyandong"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <mappers>
  24. <!-- //映射文件地址 -->
  25. <mapper resource="com/ccut/database/User.xml"/>
  26. </mappers>
  27. </configuration>

3.0 写映射文件 User.xml

  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.ccut.database.Mybatis_CRUD">
  4. <!-- 按id查询 -->
  5. <select id="selectTByID" parameterType="String" resultType="T">
  6. select * from t where name = #{name}
  7. </select>
  8. <!-- 插入 -->
  9. <insert id="insertTByID" parameterType="T">
  10. insert into t(id,name) values(#{id},#{name})
  11. </insert>
  12. <!-- 修改 -->
  13. <update id="updateTByID" parameterType="T">
  14. update t set name = #{name} where id=#{id}
  15. </update>
  16. <!-- 删除 -->
  17. <delete id="deleteTByID" parameterType="int">
  18. delete from t where id = #{id}
  19. </delete>
  20. </mapper>

4.0 建立数据库表对应的模型DAO T.java

  1. package com.ccut.DAO;
  2. public class T {
  3. private int id;
  4. private String name;
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. }

5.0 编写接口类 Mybatis_CRUD.java

这里注意 映射文件User.xml中的 namespace的值要与下面这个接口的完全限定名相同
为 com.ccut.database.Mybatis_CRUD

  1. package com.ccut.database;
  2. import java.util.List;
  3. import com.ccut.DAO.T;
  4. /** * @author admin * */
  5. public interface Mybatis_CRUD {
  6. public void deleteTByID(int id);
  7. public void updateTByID(T t);
  8. public void insertTByID(T t);
  9. public List<T> selectTByID(String name);
  10. }

6.0 编写上述接口的实现类 CRUD.java

  1. package com.ccut.database;
  2. import java.util.List;
  3. import org.apache.ibatis.session.SqlSession;
  4. import com.ccut.DAO.T;
  5. import com.ccut.mybatisUtil.MybatisUtil;
  6. /** * mybatis 入门即使用规则之增删改查 * @author admin * */
  7. public class CRUD implements Mybatis_CRUD{
  8. //删除
  9. @Override
  10. public void deleteTByID(int id) {
  11. String arg0 = "com.ccut.database.Mybatis_CRUD.deleteTByID";
  12. SqlSession session = MybatisUtil.getSession(true);
  13. session.delete(arg0, id);
  14. session.close();
  15. }
  16. //修改
  17. @Override
  18. public void updateTByID(T t) {
  19. String arg0 = "com.ccut.database.Mybatis_CRUD.updateTByID";
  20. SqlSession session = MybatisUtil.getSession(true);
  21. session.update(arg0, t);
  22. session.close();
  23. }
  24. //插入
  25. @Override
  26. public void insertTByID(T t) {
  27. String arg0 = "com.ccut.database.Mybatis_CRUD.insertTByID";
  28. SqlSession session = MybatisUtil.getSession(true);
  29. session.insert(arg0, t);
  30. session.close();
  31. }
  32. //查询
  33. @Override
  34. public List<T> selectTByID(String name) {
  35. String arg0 = "com.ccut.database.Mybatis_CRUD.selectTByID";
  36. SqlSession session = MybatisUtil.getSession(true);
  37. List<T> result = session.selectList(arg0, name);
  38. session.close();
  39. return result;
  40. }
  41. }

7.0 编写mybatis工具类,用来读取配置文件,创建会话工厂,返回Sqlsession调用mybatis javaAPI

  1. package com.ccut.mybatisUtil;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. public class MybatisUtil {
  9. private static Reader reader;
  10. private static SqlSessionFactory factory;
  11. private static String cfg = "Configuration.xml";
  12. private static void setSqlSessionFactory(){
  13. try {
  14. //读取配置文件
  15. reader = Resources.getResourceAsReader(cfg);
  16. factory = new SqlSessionFactoryBuilder().build(reader);
  17. } catch (IOException e) {
  18. // TODO Auto-generated catch block
  19. System.out.println("找不到文件!");
  20. e.printStackTrace();
  21. }
  22. }
  23. public static SqlSession getSession(boolean yes){
  24. setSqlSessionFactory();
  25. return factory.openSession(yes);
  26. }
  27. }

8.0 编写测试类Main.java

  1. package com.ccut.test;
  2. import java.io.Reader;
  3. import java.util.List;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import com.ccut.DAO.T;
  10. import com.ccut.database.CRUD;
  11. import com.ccut.database.Mybatis_CRUD;
  12. import com.ccut.mybatisUtil.MybatisUtil;
  13. public class Main {
  14. //另一种CRUD的方法与本例子无关,可以删掉,就是代理开发模式,不用实现接口类
  15. /* private static void sqlByinterface(){ SqlSession session = MybatisUtil.getSession(true); Mybatis_CRUD mapper = session.getMapper(Mybatis_CRUD.class); //mapper.deleteTByID(1); T t = new T(); // t.setId(1); // t.setName("xyda"); // mapper.insertTByID(t); // t.setId(1); // t.setName("xyd"); // mapper.updateTByID(t); List<T> a = mapper.selectTByID("xyd"); for(T v:a){ System.out.println(v.getId()+"-----"+v.getName()); } session.close(); } */
  16. //本次所用的函数
  17. private static void sqlByxml(){
  18. CRUD crud = new CRUD();
  19. T t = new T();
  20. t.setId(3);
  21. t.setName("123xuyandong");
  22. //crud.insertTByID(t);
  23. crud.updateTByID(t);
  24. List<T> a = crud.selectTByID("123xuyandong");
  25. for(T as:a){
  26. System.out.println(as.getId()+" "+as.getName());
  27. }
  28. crud.deleteTByID(1);
  29. }
  30. public static void main(String[] args) {
  31. //sqlByinterface();
  32. sqlByxml();
  33. }
  34. }
  35. 以上测试均通过

点击项目进入项目地址

发表评论

表情:
评论列表 (有 0 条评论,364人围观)

还没有评论,来说两句吧...

相关阅读