mybaits2-Dao开发
项目结构:

1、创建project,导入相关依赖(前提)。配置db.properties与mybaits-config
#mysql驱动
db.driver=com.mysql.jdbc.Driver #mysql数据库连接信息
#端口号后信息:数据库名字,是否设置数据库编码,字符编码,是否使用SSl
#SSL协议提供的服务主要有:
#1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
#2)加密数据以防止数据中途被窃取;
#3)维护数据的完整性,确保数据在传输过程中不被改变。
db.url=jdbc:mysql://localhost:3306/mybatis_wjw?useUnicode=true&characterEncoding=UTF-8&useSSL=false #数据库用户
db.username=root #数据库密码
db.password=xxxx
<?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>
<!--加载db.properties -->
<properties resource="db.properties"></properties> <!--设置别名 -->
<typeAliases>
<!--单个别名设置 -->
<!-- <typeAlias type="schema.User" alias="user"/> -->
<package name="Dao"/>
</typeAliases>
<!-- mybatis环境变量配置信息 -->
<environments default="development">
<environment id="development">
<!-- jdbc事务控制管理,这里由mybatis管理 -->
<transactionManager type="JDBC"/>
<!-- 数据源配置 -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!--映射文件管理 -->
<mappers>
<!--通过mapper.xml文件配置 -->
<mapper resource="dao/User.xml"/>
<!--通过类名 必需是mapper代理开发 -->
<!--<mapper class="dao.User"/> -->
<!--批量配置,推荐使用 -->
<!--<package name="dao"/>-->
</mappers>
</configuration>
2、创建单例模式SQLSessionFctory 和 SqlSession
package pubfun; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; public class GetSqlSession { public static SqlSession getSqlSession(){
return InitSqlSessionFactory.ssf.openSession();
} private static class InitSqlSessionFactory{ private volatile static SqlSessionFactory ssf = getSqlSessionFaactory(); private static SqlSessionFactory getSqlSessionFaactory(){
try {
if(ssf==null){
ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml") );
}
} catch (IOException e) {
e.printStackTrace();
}
return ssf;
} } public static void main(String args[]){
for (int i = 0; i < 5; i++) {
new Thread(()->{
SqlSession ss = getSqlSession();
System.out.println("ss:"+ss);
}).start();
} } }
3、实现Dao层
<?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="user"> <select id="getByIdSchema" parameterType="int" resultType="schema.User">
select * from t_user where tid = #{value}
</select> <parameterMap id="UserParameter" type="java.util.Map">
<parameter property="tid" javaType="java.lang.Integer"></parameter>
<parameter property="uname" javaType="java.lang.String" ></parameter>
<parameter property="birthday" javaType="java.util.Date"></parameter>
<parameter property="sex" javaType="java.lang.Character"></parameter>
<parameter property="address" javaType="java.lang.String" ></parameter>
</parameterMap> <resultMap id="UserResult" type="schema.User">
<id column="id" property="tid"></id>
<result column="name" property="uname"></result>
<result column="birthday" property="birthday"></result>
<result column="sex" property="sex"></result>
<result column="address" property="address"></result>
</resultMap> <select id="getByConditionListSchema" parameterMap="UserParameter" resultType="schema.User">
select * from t_user where 1=1 and uname like concat('%',#{uname},'%') and address = #{address}
</select> <!--<insert id="insertUser" parameterMap="schema.User" >-->
<!--insert into t_user values(#{id},#{name},#{birthday},#{sex},#{address})-->
<!--</insert>--> <!--<delete id="deleteUser" parameterMap="schema.User" >-->
<!--delete from t_user where id = #{id}-->
<!--</delete>--> <!--<update id="updateUser" parameterMap="schema.User">-->
<!--update from t_user where id = #{id}-->
<!--</update>--> </mapper>
package dao; import org.apache.ibatis.session.SqlSessionFactory;
import schema.User; import java.util.List;
import java.util.Map; public interface Dao{
public SqlSessionFactory ssf = null; //使用主键查询
public Object getByIdSchema(int i); //使用非主键查询返回list
public List getByConditionListSchema(Map map); }
package dao; import org.apache.ibatis.session.SqlSession;
import pubfun.GetSqlSession;
import schema.User; import java.util.List;
import java.util.Map; public class UserDao implements Dao { @Override
public Object getByIdSchema(int i) {
SqlSession ss = GetSqlSession.getSqlSession();
User user = ss.selectOne("user.getByIdSchema",i);
ss.close();
return user;
} @Override
public List getByConditionListSchema(Map map) {
SqlSession ss = GetSqlSession.getSqlSession();
List<User> list= ss.selectList("user.getByConditionListSchema",map);
ss.close();
return list;
} }
4、测试
import dao.Dao;
import dao.UserDao;
import schema.User; import java.util.HashMap;
import java.util.List;
import java.util.Map; public class Main { public static void main(String[] args) {
Dao ud = new UserDao();
System.out.println(ud.getByIdSchema(3)); Map user = new HashMap();
user.put("uname","二");
user.put("address","湖南长沙");
List list = ud.getByConditionListSchema(user);
System.out.println(list);
}
}
数据库:

mybaits2-Dao开发的更多相关文章
- Mybatis学习笔记(三) 之Dao开发
使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法,常用还是Mapper接口开发. SqlSession的使用范围 public class test1 { ...
- MyBatis原始dao开发及问题总结(五)
一.MyBatis原始Dao开发方式 1.原始dao开发需要程序员编写dao接口和dao接口实现类 编写UserDao接口:UserDao.java package codeRose.dao; pub ...
- Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6869133.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——My ...
- Mybatis的原始dao开发方法
在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...
- Mybatis-spring 传统dao开发
jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?chara ...
- Mybatis学习2传统dao开发
传统dao开发 在mybati基础上 dao和daoimpl 1.工厂工具类 获得SqlSessionFactory SqlSessionFactoryUtil.java package util; ...
- Mybatis学习(2)原始dao开发和使用mapper接口代理开发
基础知识: 1).SqlSessionFactoryBuilder: 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory.将SqlSessionFact ...
- mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)
5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂 ...
- java-mybaits-00202-DAO-原始DAO开发方法
原始Dao开发方法需要程序员编写Dao接口和Dao实现类. 原本的ibatis的 需要在dao实现类中注入一个SqlSessionFactory工厂. 1.思路 程序员需要写dao ...
- Mybatis Dao开发方法(二)
使用Mapper代理的方式进行开发 Mapper开发的原理 使用Mybatis的Mapper代理方式进行开发,使用该方式,只需要编写Mapper接口,不再需要编写实现类,由Mybatis框架通过接 ...
随机推荐
- UVaLive 3401 Colored Cubes (暴力)
题意:给定n个立方体,让你重新涂尽量少的面,使得所有立方体都相同. 析:暴力求出每一种姿态,然后枚举每一种立方体的姿态,求出最少值. 代码如下: #pragma comment(linker, &qu ...
- POJ2796【单调栈】
题意: 题意:n个数,求某段区间的最小值*该段区间所有元素之和的最大值 思路: 主要参考:http://www.cnblogs.com/ziyi–caolu/archive/2013/06/23/31 ...
- bzoj 2761: [JLOI2011]不重复数字【hash】
map会T,双hash会冲突--于是非酋写了个三hash #include<iostream> #include<cstdio> #include<cstring> ...
- 如果没有intelliJ 编译器?
刚刚是了一晚上的用记事本来写代码,脱离编译器,发现自己完全废了. 写了好多个类,在命令行编译失败,上网查错误,说编码问题, 编码问题解决后,命令行还是编译失败,粘贴到编译器 发现完全是自己代码能力太弱 ...
- 关于margin和padding取值为百分比和负值的总结
以下是自己学习过程中的总结,直接上结论: 1.margin/padding取值为百分比: margin和padding四个方向上的取值为百分比都是参照父级元素的宽度来计算的. 2.margin取值为负 ...
- DP+埃氏筛法 Codeforces Round #304 (Div. 2) D. Soldier and Number Game
题目传送门 /* 题意:b+1,b+2,...,a 所有数的素数个数和 DP+埃氏筛法:dp[i] 记录i的素数个数和,若i是素数,则为1:否则它可以从一个数乘以素数递推过来 最后改为i之前所有素数个 ...
- cordova 安卓项目打包 release安装包
问题描述: 打包安卓项目, 如果是在项目中只是使用debug包的话, 其中的签名方式使用的都是cordova框架本身, 那么每次打包的话, 都会把之前的安装包给覆盖掉. 现在打包做出一个release ...
- 牛客网NOIP赛前集训营-普及组
第一场: A-绩点 题目描述 小A刚考完大学考试.现在已经出了n门课的成绩,他想自己先算一下这些课的绩点是多少.设第i门课的他拿到的绩点是gpai,而这门课的学分是sci,那么他的总绩点用下面的公式计 ...
- Linux Ubuntu 14.04 LTS下VirtualBox连接USB
1.环境 主机:Ubuntu 14.04 LTS 虚拟机:Windows 7 专业版本 VirtualBox: 图形用户界面版本 5.1.8 r111374 (Qt5.6.1) 2.在主机上给Virt ...
- EmitMapper系列之二:EmitMapper的使用小结
EmitMapper的入门 EmitMapper引用 EmitMapper案例 最近公司开发项目前端使用一个js框架,后端使用ef,js前台读取的json采用实体的dto来进行生成. 在网上看到了Em ...