mybatis简单使用DAO方式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > mybatis简单使用DAO方式

mybatis简单使用DAO方式

 2013/11/8 12:15:30  sharefling  程序员俱乐部  我要评论(0)
  • 摘要:最近查询看可以下mybatis,以前是跟spring集合在一块,根据mapperfactory直接注入,mybatisdaobean就可以直接使用了,还没存在什么问题,但是单独使用的话,最近有些问题和不同方式(都是简单实用,熟练使用的绕过)第一种:mybatis还是根据映射来匹配class和xml,所以mybatis中DAO还是和mapDAO.xml相互匹配,是通过属性namespace,这一点就像struts2中namespace对应的命名空间,表单里面的namespace属性
  • 标签:使用 方式
最近查询看可以下mybatis,以前是跟spring集合在一块,根据mapperfactory直接注入,mybatis dao bean就可以直接使用了,还没存在什么问题,但是单独使用的话,最近有些问题和不同方式(都是简单实用,熟练使用的绕过)

第一种:
mybatis还是根据映射来匹配class和xml,所以mybatis中DAO还是和mapDAO.xml相互匹配,是通过属性namespace,这一点就像struts2中namespace对应的命名空间,表单里面的namespace属性,
再通过session.getMapper(class)名字要与namespoace一致,方能获取,但是这样获取有时候会遇到问题,就是不能将interface映射成功,这就要注意路径,最好写完整路径。

示例
mapper配置文件
mapper namespace="mybatis.test.Db_userinforDao">

<insert id="insert" parameterType="mybatis.test.Db_userinfor">
        insert into db_userinfor
values(#{username},#{userpass},#{userinterest},#{useraddress},#{userphone},#{usergrades})
    </insert>
DAO文件
public interface Db_userinforDao{
public void insert(Db_userinfor userinfor);

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="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/helper?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull" />
                <property name="username" value="root" />
                <property name="password" value="root" />
               
            </dataSource>
        </environment>
    </environments>
    <mappers><!--
        <mapper resource="com/mybatis/config/UserDaoMapper.xml"/>
    -->
    <mapper resource="mybatis/test/UserDaoMapper.xml" />
    </mappers>
   
</configuration>
</mapper>

测试main类
<?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="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/helper?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull" />
                <property name="username" value="root" />
                <property name="password" value="root" />
               
            </dataSource>
        </environment>
    </environments>
    <mappers><!--
        <mapper resource="com/mybatis/config/UserDaoMapper.xml"/>
    -->
    <mapper resource="mybatis/test/UserDaoMapper.xml" />
    </mappers>
   
</configuration>


第二种:
比较简单,就是不使用DAO接口,这时候namespace就随便取名字,直接使用session获取sql操作,比如session.insert("操作数据库的名字操作(命名空间+具体操作:userdao.insert)","参数"),这样的话非常直接,但是代码耦合度非常高,简单操作数据库是非常好的,但是碰到复杂一点的话,就不合理

main代码:
public static void main(String args[]) throws IOException{
Reader reader=Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(reader);
BasicConfigurator.configure();
SqlSession session=factory.openSession();

//Db_userinforDao dao=session.getMapper(Db_userinforDao.class);
Db_userinfor userinfor=new Db_userinfor();
userinfor.setUsername("dsd");
userinfor.setUserpass("yaoge22");
userinfor.setUseraddress("www.");
userinfor.setUsergrades("50");
userinfor.setUserinterest("IT");
userinfor.setUserphone("122");
//不同操作
session.insert("mybatis.test.Db_userinforDao.insert",userinfor);

//dao.insert(userinfor);
session.commit();
session.close();


}


注明:博客主要用来整理,记录学些的知识,然后与网友相互交流,若有不对,请指出,但不要有不文明行为
上一篇: java多线程 下一篇: socket
发表评论
用户名: 匿名