mybatis简单增删改查入门(基于xml)

声明:lombok插件如果你想用请自行下载,你也可以直接alt+insert来编写实体类
基于注解的形式只需要将配置文件里面的

<mapper resource="com/lp/dao/UserDao.xml"/>
改为
<mapper resource="com/lp/dao/UserDao.xml"/>

dao接口里面自行添加@注解

1、首先,导入依赖

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

实体类总不能少吧

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

}

2、配置mybatis配置文件

<?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>
    <environments default="localhost">
        <environment id="localhost">
            <transactionManager type="JDBC"/>
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="962464"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/lp/dao/UserDao.xml"/>
    </mappers>
</configuration>

3、log4j.properties

# 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=d:\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


4、UserDao接口

public interface UserDao {
//查询所有
    List<User> findAll();
//插入用户
    void saveUser(User user);
//通过id删除
    void deleteUserById(Integer id);
//更新/修改用户
    void updateUser(User user);
//通过id查询
    List<User> selectUserById(Integer id);
//模糊查询
    List<User> selectByLike(String string);
//查询总数
    Integer selectUserCount();
}

5、UserDao映射文件

<?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.lp.dao.UserDao">

    <select id="findAll" resultType="com.lp.domain.User">
        select * from user ;
    </select>

    <insert id="saveUser" parameterType="com.lp.domain.User">
        insert into user
         (id,username,birthday,sex,address)
        values
         (#{id},#{username},#{birthday},#{sex},#{address});
    </insert>

    <delete id="deleteUserById" parameterType="int">
        delete from user where id = #{id};
    </delete>

    <update id="updateUser" parameterType="com.lp.domain.User">
        update user
        set
        username = #{username},birthday=#{birthday},sex=#{sex},address=#{address}
        where id = #{id};
    </update>

    <select id="selectUserById" parameterType="int" resultType="com.lp.domain.User">
        select * from user where id = #{id };
    </select>

    <select id="selectByLike" parameterType="String" resultType="com.lp.domain.User">
        <!--   select * from user where username like #{username}; --><!-- 一般用这种形式 -->

        select * from user where username like '%${username}%';
    </select>

    <select id="selectUserCount" resultType="int">
        select count(id) from user ;
    </select>
</mapper>

6、Test测试

public class test {
   private InputStream inputStream;
   private SqlSession sqlSession;
   private UserDao mapper;
   @Before
   public void init() throws IOException {
       inputStream = Resources.getResourceAsStream("MyBatisConfig.xml");
       SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
       SqlSessionFactory factory = sessionFactoryBuilder.build(inputStream);
       sqlSession = factory.openSession();
       mapper = sqlSession.getMapper(UserDao.class);
       System.out.println("初始化完成!");
   }
   @After
   public void destroy() throws IOException {
       sqlSession.commit();
       sqlSession.close();
       inputStream.close();
       System.out.println("资源关闭!");
   }

    @Test
    public void findAll(){
        List<User> userList = mapper.findAll();
        for (User user : userList) {
            System.out.println(user);
        }

    }

    @Test
    public void saveUser(){
        //数据库已经设置id主键自增,id可以不用传值
        mapper.saveUser(new User(null,
                "zhangsan",
                new Date(),
                "男",
                "北京市某某小区"));

    }

    @Test
    public void deleteUserById(){

        //数据库已经设置id主键自增,id可以不用传值
       mapper.deleteUserById(49);

    }

    @Test
    public void updateUser(){
        //数据库已经设置id主键自增,id可以不用传值
        mapper.updateUser(new User(49,
                "张三",
                new Date(),
                "男",
                "北京市某某小区"));

    }
    @Test
    public void selectUserById(){
        List<User> users = mapper.selectUserById(48);
            System.out.println(users);
        }

    @Test
    public void selectByLike(){
//        List<User> users = mapper.selectByLike("%王%");//一般用这种形式
        List<User> users = mapper.selectByLike("王");
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void selectUserCount(){
        Integer integer = mapper.selectUserCount();
        System.out.println(integer);
    }
}

猜你喜欢

转载自blog.csdn.net/lp20171401131/article/details/106303166