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

来源:互联网 发布:全棉时代 知乎 编辑:程序博客网 时间:2024/06/15 09:38

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

首先看一下工程总体结构

配置Mybatis环境

  1. 导入相关Jar包

    asm-3.3.1.jarcglib-2.2.2.jarcommons-logging-1.1.1.jarjavassist-3.17.1-GA.jarjunit-4.9.jarlog4j-1.2.17.jarlog4j-api-2.0-rc1.jarlog4j-core-2.0-rc1.jarmybatis-3.2.7.jarmysql-connector-java-5.1.7-bin.jarslf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jar
  2. 配置log4j属性文件

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

    jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisjdbc.username=rootjdbc.password=123
  4. 创建SqlMapConfig.xml文件

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//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;}@Overridepublic User findUserById(int id) {    SqlSession session = factory.openSession();    User user = session.selectOne("test.findUserById", id);    session.close();    return user;}@Overridepublic List<User> findUserByName(String name) {    SqlSession session = factory.openSession();    List<User> list= session.selectList("test.findUserByName", name);    session.close();    return list;}@Overridepublic void addUser(User user) {    SqlSession session = factory.openSession();    session.insert("test.addUser", user);    session.commit();    session.close();}@Overridepublic 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 0
原创粉丝点击