mybatis如何增改删(以及mappers中的parameterType问题)

首先看完我第一篇笔记http://blog.csdn.net/zyf2333/article/details/77528279,我是跟着这一篇来继续学习的。然后学习过程中发现parameterType的参数传入有点搞不懂,最后讲讲。

jikeUser.xml文件如下:直接将增删改写一起了

<?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>
<!--此处的parameterType中使用了别名机制,配置在MyBatis.xml中-->
    <insert id="insertUser" parameterType="JikeUser" statementType="PREPARED"
        keyProperty="id" useGeneratedKeys="true">
        insert into
        JikeUser(username,password) values
        (#{userName},#{passWord})
    </insert>

    <update id="updateUser" parameterType="JikeUser">
        UPDATE JikeUser SET
        userName=#{userName},password=#{passWord} WHERE id=#{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from JikeUser where id=#{id}
    </delete>
</mapper> 

基础 配置文件如下(MyBatis.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration 
PUBLIC "-//iBATIS.com//DTD SQL Map Config 3.0//EN" 
"mybatis-3-config.dtd" >
<configuration>

    <!-- 定义别名,这样在jikeUser.xml中的parameterType中不用写全类名了 -->
    <typeAliases>
        <typeAlias type="jike.book.pojo.JikeUser" alias="JikeUser" />
    </typeAliases>

    <!-- 定义数据库信息,默认使用development数据库构造环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 采用jdbc事物管理 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据库链接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="zyf1998don" />
            </dataSource>
        </environment>
    </environments>
    <!-- 定义映射器,即引用上面的那个SQL语句文件 -->
    <mappers>
        <mapper resource="jike/book/map/jikeUser.xml" />
        <mapper class="jike.book.map.InterfaceJikeUserMap" />
    </mappers>
</configuration>

然后是JikeUser.java

package jike.book.pojo;

public class JikeUser {

    private int id;
    private String userName;
    private String passWord;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

最后写个测试类

package jike.book.test;

import java.io.Reader;

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 jike.book.map.InterfaceJikeUserMap;
import jike.book.pojo.JikeUser;
public class TestUpdate {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String resource="jike/book/map/MybatisConfig.xml";
        Reader reader=null;
        SqlSession sqlSession;
        try{
            reader=Resources.getResourceAsReader(resource);
        }catch(Exception e){
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
        sqlSession=sqlSessionFactory.openSession();
        try{
            JikeUser jk=new JikeUser();
            jk.setUserName("jike002");
            jk.setPassWord("1245464");
            sqlSession.insert("insertUser", jk);
            sqlSession.commit();

            JikeUser jk2=new JikeUser();
            jk2.setId(6);
            jk2.setUserName("jk003");
            jk2.setPassWord("666");
            sqlSession.update("updateUser", jk2);
            sqlSession.commit();

            JikeUser jk3=new JikeUser();
            jk3.deleteUser(1);
            sqlSession.commit();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

}

最后说一下parameterType的参数传入问题:

parameterType可以传入很多类型,基础的如int varchar等等,这些很好理解,比如说在SQL语句的#{id}就代表着要传入一个int类型的数字。但是在学习过程中,发现居然还能传入Java类(即上面的 parameterType=”JikeUser”; 这里利用了别名机制,实际上应该是 parameterType=”jike.book.pojo.JikeUser”,即类的全名)?

于是最后我的领悟是:有多个参数时一般都会插入类用来使这个xml文件和Java文件相关联,并且可以令xml文件引用Java中的属性。在本例中,联系上了JikeUser.java,它有id,userName和passWord这三个属性。然后在JikeUser.xml中的插入语句中

<insert id="insertUser" parameterType="JikeUser" statementType="PREPARED"
        keyProperty="id" useGeneratedKeys="true">
        insert into
        JikeUser(username,password) values
        (#{userName},#{passWord})
    </insert>

此处的#{userName}和#{passWord}就是传入的JikeUser.java这个类中的userName和passWord两个属性,且名字要对应相同(ps:此处不设置id是因为数据库开启了自增,所以id会自动增加,故没有管id)。而如果只有一个参数,则直接写”int” “String”之类的就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis 是一种流行的持久层框架,它提供了一种简单的方式来映射 Java 对象到数据库表,并且能够轻松地执行 CRUD 操作。 要使用 MyBatis删改查数据,需要先进行一些配置和编写映射文件,然后通过 SqlSession 进行数据操作。下面是一个简单的例子,演示了如何使用 MyBatis 进行删改查操作: 1. 配置文件 首先需要编写 MyBatis 的配置文件,包括数据库连接信息、映射文件路径等: ```xml <!-- 数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> <!-- 映射文件路径 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> ``` 2. 映射文件 接着需要编写映射文件,定义 SQL 语句和结果映射关系: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="addUser" parameterType="com.example.model.User"> INSERT INTO users(name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser" parameterType="com.example.model.User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUserById" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> </mapper> ``` 3. Java 代码 最后,使用 SqlSession 对象执行 SQL 语句: ```java SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); SqlSession sqlSession = sessionFactory.openSession(); // 查询 User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1); // 添加 User newUser = new User("Tom", 20); sqlSession.insert("com.example.mapper.UserMapper.addUser", newUser); // 更新 user.setName("Jerry"); user.setAge(21); sqlSession.update("com.example.mapper.UserMapper.updateUser", user); // 删除 sqlSession.delete("com.example.mapper.UserMapper.deleteUserById", 1); sqlSession.commit(); sqlSession.close(); ``` 以上代码演示了 MyBatis 的基本用法,可以根据具体的业务需求进行扩展。 ### 回答2: MyBatis 是一个开源的持久层框架,它可以与 Java 应用程序进行交互,实现对数据库的删改查操作。下面是一个基本使用 MyBatis 进行删改查的示例: 1. 首先,需要在项目导入 MyBatis 的依赖包,并配置 MyBatis 的配置文件。 2. 定义实体类,对应数据库的表,例如: ```java public class User { private int id; private String name; private int age; // 省略getter和setter方法 } ``` 3. 创建 SQL 映射文件,定义具体的 SQL 语句和参数映射关系。例如,定义加用户的 SQL 语句: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.UserMapper"> <!-- 加用户 --> <insert id="addUser" parameterType="com.example.User"> INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age}) </insert> <!-- 其他操作的 SQL 语句 --> <!-- ... --> </mapper> ``` 4. 创建 Mapper 接口,作为 SQL 的调用接口。例如: ```java public interface UserMapper { // 加用户 void addUser(User user); // 其他操作方法 // ... } ``` 5. 在项目配置文件配置 Mapper 接口的映射关系: ```xml <beans> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- mybatis 配置 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 数据源 --> <property name="dataSource" ref="dataSource" /> </bean> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.example.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> </beans> ``` 6. 在业务代码调用 Mapper 接口定义的方法,实现具体的删改查操作。例如: ```java @Autowired private UserMapper userMapper; public void addUser(User user) { userMapper.addUser(user); } ``` 通过以上步骤,我们就搭建了一个使用 MyBatis 进行删改查操作的项目。实际开发,还可以根据需要配置各种高级功能,比如分页查询、动态 SQL 等,以满足复杂的需求。 ### 回答3: MyBatis 是一个持久层框架,可以方便地进行数据库的删改查操作。 首先,我们需要先在项目引入 MyBatis 的依赖包,并在配置文件配置数据库的相关信息。 接下来,我们可以使用注解或者 XML 文件的方式来映射数据库的表与实体类之间的关系。对于删改查操作,我们可以使用如下的方式实现: 1. 加(Insert):通过调用 MyBatis 的接口方法,传入实体类对象,即可将数据插入到数据库。 2. 删除(Delete):通过调用 MyBatis 的接口方法,传入要删除的记录的主键或其他条件,即可将数据从数据库删除。 3. 修改(Update):通过调用 MyBatis 的接口方法,传入要修改的记录的主键或其他条件,并设置修改后的属性值,即可将数据更新到数据库。 4. 查询(Select):通过调用 MyBatis 的接口方法,传入要查询的记录的主键或其他条件,即可从数据库获取到符合条件的数据,并将其封装成实体类对象返回。 在使用 MyBatis 进行删改查操作时,我们可以灵活运用动态 SQL、条件判断、分页等功能,来满足不同业务需求。 总之,通过 MyBatis,我们可以简化数据库操作的代码,提高开发效率,降低数据库相关错误的风险,是开发数据库相关项目的好帮手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值