温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Mybatis中通过配置xml实现单表增删改查功能

发布时间:2021-04-12 15:31:30 来源:亿速云 阅读:232 作者:Leah 栏目:开发技术

怎么在Mybatis中通过配置xml实现单表增删改查功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Mybatis简介

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。

如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

<dependency>   <groupId>org.mybatis</groupId>   <artifactId>mybatis</artifactId>   <version>x.x.x</version> </dependency>

配置步骤

1.引入Mybatis的jar包

2.编写实体类与DAO接口

3.添加主配置文件(配置mysql环境,事务类型,数据源,连接数据库的基本信息,映射文件的位置)

4.添加DAO接口的映射文件(需要指明DAO接口的位置,为每个方法做一个映射)注:所在路径在Resource文件夹下,目录路径需要DAO的层次结构一样

5.使用mybatis框架

使用步骤(所有的xml配置已配置完毕)

1.读取配置文件,可使用mybatis封装的Resources类。

2.创建SQLSessionFactory工厂

3.使用工厂生产SQLsession对象

4.使用SQLSession创建DAO接口的代理对象

5.使用代理对象执行方法

6.提交事务,释放资源

基础数据

实体类

public class User implements Serializable {       /**      * Java实体类为什么要实现Serializable接口      *  1.用于序列化与反序列化--一个类只有实现了Serializable接口,它的对象才能被序列化。      *  2.Serializable接口就是Java提供用来进行高效率的异地共享实例对象的机制,实现这个接口即可。      */         private Integer id;     private String username;     private Date birthday;     private String sex;     private String address;       public Integer getId() {         return id;     }       public void setId(Integer id) {         this.id = id;     }       public String getUsername() {         return username;     }       public void setUsername(String username) {         this.username = username;     }       public Date getBirthday() {         return birthday;     }       public void setBirthday(Date birthday) {         this.birthday = birthday;     }       public String getSex() {         return sex;     }       public void setSex(String sex) {         this.sex = sex;     }       public String getAddress() {         return address;     }       public void setAddress(String address) {         this.address = address;     }       @Override     public String toString() {         return "User{" +                 "id=" + id +                 ", username='" + username + '\'' +                 ", birthday=" + birthday +                 ", sex='" + sex + '\'' +                 ", address='" + address + '\'' +                 '}';     }

DAO层的接口

public interface IUserDao {       /**      * 查询所有      * @return 所有的User信息      */     //@Select("select * from User")     List<User> findAll();       /**      * 保存操作      * @param user      */     //@Insert("insert into User(username,address,sex,birthday)values()")     void saveUser(User user);       /**      * 更改操作      */     void updateUser(User user);       /**      * 删除操作      * @param i      */     void deleteUser(Integer i);       /**      * 根据id查询单个用户      * @param id      * @return      */     User findById(Integer id);       /**      * 根据名称模糊查询      * @param name      * @return      */     List<User> findByName(String name);       /**      * 查询总用户数      * @return      */     int findTotal(); }

主配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"         "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--myBatis的主配置文件 --> <configuration>     <!--配置环境-->     <environments default="mysql">         <!--配置mysql环境-->         <environment id="mysql">             <!--配置事务的类型-->             <transactionManager type="JDBC"></transactionManager>             <!--配置数据源(连接池)-->             <dataSource type="POOLED">                 <!--配置连接数据库的基本信息-->                 <property name="driver" value="com.mysql.jdbc.Driver"/>                 <property name="url" value="jdbc:mysql://localhost:3306/eesy"/>                 <property name="username" value="root"/>                 <property name="password" value="root"/>             </dataSource>         </environment>     </environments>     <!--映射文件 配置文件方式-->     <mappers>         <mapper resource="com/dynamic_basics/dao/IUserDao.xml"></mapper>     </mappers>         <!--映射文件 注解方式(使用注解就要删除源配置文件)-->    <!-- <mappers>         <mapper class="com.dynamic_basics.dao.IUserDao"></mapper>     </mappers>--> </configuration>

子配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">   <mapper namespace="com.dynamic_basics.dao.IUserDao">       <!--使用配置的方式解决Java实体类与数据库列名不一致的问题-->     <resultMap id="userMap" type="com.dynamic_basics.domain.User">         <!--主键字段-->         <id property="userId" column="id"></id>         <!--非主键字段-->         <result property="userName" column="username"></result>         <result property="userAddress" column="address"></result>         <result property="userSex" column="sex"></result>         <result property="userBirthday" column="birthday"></result>     </resultMap>       <!--查询所有 id使用方法名-->     <select id="findAl l" resultType="com.dynamic_basics.domain.User" resultMap="userMap">         select * from user     </select>       <!--保存用户-->     <insert id="saveUser" parameterType="com.dynamic_basics.domain.User">         <!--参数使用了ognl表达式-->         insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});     </insert>       <!--更新用户-->     <insert id="updateUser" parameterType="com.dynamic_basics.domain.User">        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}     </insert>       <!--删除用户-->     <delete id="deleteUser" parameterType="int">         delete from User where id=#{id}     </delete>       <!--根据id查询用户-->     <select id="findById" parameterType="int" resultType="com.dynamic_basics.domain.User">         select * from user where id=#{id}     </select>       <!--根据名称模糊查询-->     <select id="findByName" resultType="com.dynamic_basics.domain.User" parameterType="String">         select * from user where username like #{name}     </select>       <!--获取用户的总记录数-->     <select id="findTotal" resultType="int">         SELECT COUNT(id) FROM `user`;     </select>    </mapper>

测试类

/**  * @Author: Promsing  * @Date: 2021/3/29 - 8:58  * @Description: 描述 形容  * @version: 1.0  */ public class MyBatisTest {       private InputStream in;     private SqlSession sqlSession;     private IUserDao userDao;     @Before     public void init()throws Exception{         //1.读取配置文件  Resources是myBatis封装的类         in= Resources.getResourceAsStream("SqlMapConfig.xml");         //2.创建SQLSessionFactory工厂         //  SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);         SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();         SqlSessionFactory factory=builder.build(in);         //3.使用工厂生产SQLSession对象         sqlSession = factory.openSession();         //4.使用SQLSession创建DAO接口的代理对象          userDao = sqlSession.getMapper(IUserDao.class);     }     @After     public void destory()throws Exception{         //6.释放资源         //提交事务         sqlSession.commit();         sqlSession.close();         in.close();     }     //入门案例       /**      * 查询操作      */     @Test    public void selectUser(){           //初始化资源-使用注解Before           //5.使用代理对象执行方法         List<User> all = userDao.findAll();         for (User user : all) {             System.out.println(user);         }         //释放资源-使用注解After       }       /**      * 测试保存      */     @Test     public void testSave() {         User user=new User();         user.setUsername("mybatis");         user.setAddress("北京市延庆区");         user.setSex("女");         user.setBirthday(new Date());           //初始化资源-使用注解Before           //5.使用代理对象执行方法         userDao.saveUser(user);           //释放资源-使用注解After         }       /**      * 测试修改      */     @Test     public void testUpdate() {         User user=new User();         user.setId(50);         user.setUsername("mybatis_plus");         user.setAddress("北京市安次");         user.setSex("男");         user.setBirthday(new Date());           //初始化资源-使用注解Before           //5.使用代理对象执行方法         userDao.updateUser(user);           //释放资源-使用注解After         }       /**      * 测试删除      */     @Test     public void testDelete() {           //初始化资源-使用注解Before           //5.使用代理对象执行方法         userDao.deleteUser(50);           //释放资源-使用注解After       }     /**      * 查询单个人员信息      */     @Test     public void testFindById() {           //初始化资源-使用注解Before           //5.使用代理对象执行方法         User user=userDao.findById(49);         System.out.println(user);           //释放资源-使用注解After       }       /**      * 模糊查询      */     @Test     public void testFindByName() {           //初始化资源-使用注解Before           //5.使用代理对象执行方法         List<User> users=userDao.findByName("%王%");        users.forEach(i-> System.out.println(i));           //释放资源-使用注解After       }       /**      * 测试查询总记录条数      */     @Test     public void testFindTotal() {           //初始化资源-使用注解Before           //5.使用代理对象执行方法         int total=userDao.findTotal();         System.out.println(total);           //释放资源-使用注解After       }     }

总结

mybatis其实使用的方法很简单,需要多记住一些配置,当配置做好了,使用的时候很简单。Mybatis框架将JDBC中复杂的注册驱动、获取连接,使用不同的服务类(DriverManager,Connection,Statement,ResultSet)都封装了。其实框架的学习就是了解框架、熟悉配置,使用框架的阶段。

怎么在Mybatis中通过配置xml实现单表增删改查功能

怎么在Mybatis中通过配置xml实现单表增删改查功能

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI