Mybatis–环境搭建及CRUD

一.环境搭建

1.主要配置,数据库连接信息及映射类
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///test?characterEncoding=utf8
username=root
password=123
SqlMapConfig.xml
<?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">
<configuration>
    <!--加载数据库连接配置-->
    <properties resource="db.properties"/>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="jdbc"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/unclezs/dao/IUserDao.xml"></mapper>
    </mappers>
</configuration>
2.编写映射类IUserDao.java
public interface IUserDao { //todo}
3.映射类的配置文件
<?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.unclezs.dao.IUserDao">
	<!-- todo -->
</mapper>
4.配置log4j
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug,CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

二、CRUD

1.映射文件
<?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.unclezs.dao.IUserDao">
    <select id="findAll" resultType="com.unclezs.domain.User">
        select * from user
    </select>
    <select id="findUserById" resultType="com.unclezs.domain.User" parameterType="int">
        select * from user where id=#{id}
    </select>
    <insert id="addUser" parameterType="com.unclezs.domain.User">
    <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
        select last_insert_id();
    </selectKey>
        insert into USER(username,birthday,address,sex) values (#{username},#{birthday},#{address},#{sex})
    </insert>
    <update id="updateUser" parameterType="com.unclezs.domain.User">
        update user set username=#{username} where id=#{id}
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{id}
    </delete>
</mapper>
2.映射类
package com.unclezs.dao;

import com.unclezs.domain.User;

import java.util.List;

/**
 * @Author Unclezs.com
 * @Date 20:05 2019.03.24
 **/
public interface IUserDao {
    /**
     * 查找所有用户
     * @return
     */
    public List<User> findAll();
    /**
     * 根据查找一个用户
     * @return
     */
    public User findUserById(int id);

    /**
     * 添加用户
     * @param user
     */
    public void addUser(User user);

    /**
     * 更新用户
     * @param user
     */
    public void updateUser(User user);

    /**
     * 删除用户
     * @param
     */
    public void deleteUser(int id);

}

3.实体类

package com.unclezs.domain;

import java.sql.Date;

/**
 * @Author Unclezs.com
 * @Date 20:05 2019.03.24
 **/
public class User {
    private int id;
    private String username;
    private Date birthday;
    private String address;
    private String sex;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", address='" + address + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }

    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 Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
4.测试类
public class AppTest {
    private InputStream in;
    private SqlSessionFactory sessionFactory;
    private SqlSession session;
    private IUserDao userDao;
    @Before
    public void init() throws Exception {
        //1.加载配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建session工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        sessionFactory = builder.build(in);
        //3.获取会话
        session = sessionFactory.openSession(true);
        userDao = session.getMapper(IUserDao.class);
    }

    @Test
    public void testFindAll() {
        System.out.println(userDao.findAll());

    }
    @Test
    public void testAddUser(){
        User user=new User();
        user.setAddress("重庆");
        user.setUsername("uncle");
        user.setSex("男");
        user.setBirthday(new Date(System.currentTimeMillis()));
        System.out.println(user);
        userDao.addUser(user);
//        session.commit();
        System.out.println(user);
    }
    @Test
    public void TestUpdateUser(){
        User user = userDao.findUserById(54);
        user.setUsername("uncle");
        userDao.updateUser(user);
    }
    @Test
    public void testDeleteUser(){
        userDao.deleteUser(45);
    }
    @After
    public void destory() throws IOException {
        session.close();
        in.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Plus 是在 MyBatis 的基础上进行的二次封装,提供了一套通用的 CRUD(增删改查)代码操作。通过使用 MyBatis Plus,我们可以大大简化数据库操作的代码编写,并且极大提升了开发效率。 在 MyBatis Plus 中,我们只需要定义一个实体类,通过注解的方式指定数据表的映射关系,就可以自动生成包括增加、删除、更新、查询的通用操作方法。同时,MyBatis Plus 也支持使用简单的条件构造器进行查询操作,并且可以通过代码生成器生成实体类、Mapper 接口、XML 映射文件等。 对于增加操作,我们只需要调用对应的插入方法,并传入需要插入的实体对象即可。对于删除操作,我们可以通过主键或者条件构造器来删除满足条件的记录。更新操作使用了乐观锁的机制,在更新时会检查数据的版本号,防止并发导致的数据错误。查询操作可以通过主键、条件构造器或者分页进行查询,为了提高性能,还可以使用缓存进行查询结果的缓存。 MyBatis Plus 不仅提供了基本的 CRUD 操作,还可以进行条件构造器的自定义,支持 Lambda 表达式进行查询操作,提供了分页、乐观锁等功能,灵活性很高。同时,MyBatis Plus 也支持自定义 SQL 语句的编写,可以满足复杂业务场景下的需求。 总的来说,MyBatis Plus 提供了一套通用的 CRUD 代码操作,大大简化了数据访问层的开发工作,提升了开发效率和代码质量。它是一个成熟而强大的持久层框架,被广泛应用于各种 Java 后端项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值