SSM框架学习之(一)Mybatis——原始Dao开发

SSM框架学习之(一)Mybatis——原始Dao开发

首先看一下工程总体结构

配置Mybatis环境

  1. 导入相关Jar包

    asm-3.3.1.jar
    cglib-2.2.2.jar
    commons-logging-1.1.1.jar
    javassist-3.17.1-GA.jar
    junit-4.9.jar
    log4j-1.2.17.jar
    log4j-api-2.0-rc1.jar
    log4j-core-2.0-rc1.jar
    mybatis-3.2.7.jar
    mysql-connector-java-5.1.7-bin.jar
    slf4j-api-1.7.5.jar
    slf4j-log4j12-1.7.5.jar
    
  2. 配置log4j属性文件

    log4j.rootLogger=DEBUG,stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.ConversionPattern=%5p [%t] - %n%n
    
  3. 配置Mysql属性文件

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis
    jdbc.username=root
    jdbc.password=123
    
  4. 创建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"/>
        <!-- 和spring整合后 environments配置将废除-->
        <environments default="development">
            <environment id="development">
            <!-- 使用jdbc事务管理,事务控制由mybatis-->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池,由mybatis管理-->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
    
        </mappers>
    </configuration>
    

Dao层和Service层开发

  1. 创建User实体类,类的成员属性对应数据库里的字段名,同时提供set和get方法

    public class User {
        private int id;
        private String username;
        private String sex;
        private String birthday;
        private String address;
        ......
    
  2. 再就是编写Dao层接口

    public interface UserDao {
        User findUserById(int id);
        List<User> findUserByName(String name);
        void addUser(User user);
        void delUser(int id);
    }
    
  3. 其次提供Dao的实现类

    public class UserDaoImpl implements UserDao {
        private SqlSessionFactory factory;
    
    public UserDaoImpl(SqlSessionFactory factory) {
        this.factory = factory;
    }
    
    @Override
    public User findUserById(int id) {
        SqlSession session = factory.openSession();
        User user = session.selectOne("test.findUserById", id);
        session.close();
        return user;
    }
    
    @Override
    public List<User> findUserByName(String name) {
        SqlSession session = factory.openSession();
        List<User> list= session.selectList("test.findUserByName", name);
        session.close();
        return list;
    }
    
    @Override
    public void addUser(User user) {
        SqlSession session = factory.openSession();
        session.insert("test.addUser", user);
        session.commit();
        session.close();
    }
    
    @Override
    public void delUser(int id) {
        SqlSession session = factory.openSession();
        session.delete("test.delUser", id);
        session.commit();
        session.close();
    }
    

    }

  4. 整合Mybatis

    创建user.xml,根据Dao接口编写mapper映射文件

    <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="test">
        <!-- 按ID查询用户 -->
        <select id="findUserById" parameterType="int" resultType="cn.allene.mybatis.first.po.User">
            SELECT * FROM USER WHERE id=#{id}
        </select>
        <!-- 按名字模糊查询用户 -->
        <select id="findUserByName" parameterType="java.lang.String" resultType="cn.allene.mybatis.first.po.User">
            SELECT * FROM USER WHERE username LIKE '%${value}%'
        </select>
        <!-- 添加用户 -->
        <insert id="addUser" parameterType="cn.allene.mybatis.first.po.User" >
            insert into user(username, birthday, sex, address) value(#{username}, #{birthday}, #{sex}, #{address})
        </insert>
        <!-- 按ID删除用户 -->
        <delete id="delUser" parameterType="int">
            delete from user where id=#{id}
        </delete>
    </mapper>
    
  5. 最后在SqlMapConfig.xml文件中添加user.xml映射文件

    <mappers>
        <mapper resource="sqlmap/User.xml"/>
    </mappers>
    

最后测试Service层业务逻辑

这里使用到JUnit单元测试框架

public class UserTest {
    SqlSessionFactory sqlSessionFactory;
    @Before
    public void before() throws IOException{
        String resoure = "SqlMapConfig.xml";
        InputStream urlAsStream = Resources.getResourceAsStream(resoure);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(urlAsStream);
    }
    @Test
    public void findUserById(){
        UserDao dao = new UserDaoImpl(sqlSessionFactory);
        User user = dao.findUserById(1);
        System.out.println(user);
    }
    @Test
    public void findUserByName(){
        UserDao dao = new UserDaoImpl(sqlSessionFactory);
        List<User> users= dao.findUserByName("小");
        System.out.println(users);
    }
    @Test
    public void addUser(){
        UserDao dao = new UserDaoImpl(sqlSessionFactory);
        User user = new User(1, "张三", "男", System.currentTimeMillis()+"", "湖南省张家界市");
        dao.addUser(user);
    }
    @Test
    public void delUser(){
        UserDao dao = new UserDaoImpl(sqlSessionFactory);
        dao.delUser(24);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值