Rhythmk 一步一步学 JAVA (15) mybatis 入门学习-1
1、mybatis 通过mybatis-generator-core-1.3.2 代码生成:
工具下载地址:
https://code.google.com/p/mybatis/
解压工具包 mybatis-generator-core-1.3.2 找到lib目录 添加 配置文件,根据文档说明执行代码生成:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <!--
使用说明: cmd
cd 安装包存放路径
eg:
cd C:\MybatisCodeBuildTool\lib 执行:
java -jar mybatis-generator-core-1.3.2.jar -configfile 配置文件.xml -overwrite --> <generatorConfiguration>
<!-- 陪在数据库连接驱动 -->
<classPathEntry location="mysql-connector-java-5.1.22-bin.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator>
<property name="suppressDate" value="true" />
</commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/mybatistest" userId="root" password="wangkun">
</jdbcConnection> <javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- model 实体代码生成:
targetPackage:命名空间
targetProject:生成文件目录(需要存在目录) -->
<javaModelGenerator targetPackage="com.rhythmk.model"
targetProject="javacodedir">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator> <sqlMapGenerator targetPackage="com.rhythmk.dao"
targetProject="javacodedir">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator> <javaClientGenerator type="XMLMAPPER"
targetPackage="com.rhythmk.dao" targetProject="javacodedir">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!---
table 代码配置:
tableName: 数据库表名
domainObjectName: 映射对象名 通过下面配置选择生成操作方法,默认为true
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"
-->
<table tableName="MyUser" domainObjectName="MyUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" >
<!-- ignoreColumn : 排除属性 --->
<ignoreColumn column="Age" /> </table> </context>
</generatorConfiguration>
2、mybatis 增改查:
项目结构:
config.properties:
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatistest?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
db.user=root
db.pass=wangkun
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="config.properties"></properties> <environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.pass}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/rhythmk/dao/MyUserMapper.xml"/>
</mappers>
</configuration>
MyUserMapper.xml:
<?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.rhythmk.dao.MyUserMapper">
<resultMap id="BaseResultMap" type="com.rhythmk.model.MyUser">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<id column="ID" jdbcType="TINYINT" property="id" />
<result column="UserName" jdbcType="VARCHAR" property="username" />
<result column="CreateTime" jdbcType="TIMESTAMP" property="createtime" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
ID, UserName, CreateTime
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Byte" resultMap="BaseResultMap">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<include refid="Base_Column_List" />
from myuser
where ID = #{id,jdbcType=TINYINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Byte">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from myuser
where ID = #{id,jdbcType=TINYINT}
</delete>
<insert id="insert" parameterType="com.rhythmk.model.MyUser">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
insert into myuser (ID, UserName, CreateTime
)
values (#{id,jdbcType=TINYINT}, #{username,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}
)
</insert>
<insert id="insertSelective" parameterType="com.rhythmk.model.MyUser">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
insert into myuser
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="username != null">
UserName,
</if>
<if test="createtime != null">
CreateTime,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=TINYINT},
</if>
<if test="username != null">
#{username,jdbcType=VARCHAR},
</if>
<if test="createtime != null">
#{createtime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.rhythmk.model.MyUser">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update myuser
<set>
<if test="username != null">
UserName = #{username,jdbcType=VARCHAR},
</if>
<if test="createtime != null">
CreateTime = #{createtime,jdbcType=TIMESTAMP},
</if>
</set>
where ID = #{id,jdbcType=TINYINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.rhythmk.model.MyUser">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update myuser
set UserName = #{username,jdbcType=VARCHAR},
CreateTime = #{createtime,jdbcType=TIMESTAMP}
where ID = #{id,jdbcType=TINYINT}
</update> <!-- 设置 参数类型为Map 则可以通过 Map<String,Object>
进行参数化 传值,
同时 parameterType 也可以设置为具体的 JaveBean类型 如上面方法进行查询传值
--> <select id="selectUser" parameterType="Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from myuser
where ID = #{id,jdbcType=TINYINT} And UserName=#{UserName}
</select> </mapper>
测试代码:
private static SqlSessionFactory sqlSessionFactory = null;
static{
try {
InputStream is= org.apache.ibatis.io.Resources.getResourceAsStream("SqlMapConfig.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(is); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} } /**
* 添加数据
*/ public static void testInsert()
{
SqlSession session=sqlSessionFactory.openSession();
MyUser user=new MyUser();
user.setCreatetime(new Date());
user.setUsername("RHYTHMK");
session.insert("insert",user);
session.commit(); } /**
* 查询数据
*/
public static void testSelectOne()
{
SqlSession session=sqlSessionFactory.openSession();
try {
MyUser user=session.selectOne("selectByPrimaryKey",1);
System.out.printf(user.getUsername());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
session.close();
}
} /**
* 修改数据
*/
public static void testUpdate()
{
SqlSession session=sqlSessionFactory.openSession();
MyUser user=new MyUser();
user.setCreatetime(new Date());
user.setUsername("RHYTHMK_update");
user.setId(Byte.parseByte("1"));
session.insert("updateByPrimaryKeySelective",user);
session.commit();
} public static void testSelectByMap()
{
Map<String,Object> map=new HashMap<String, Object>();
map.put("id", "2");
map.put("UserName", "wangk2");
SqlSession session=sqlSessionFactory.openSession();
MyUser user=(MyUser)session.selectOne("selectUser", map) ;
System.out.println("testSelect:"+user.getId().toString()); }
相关代码:
http://pan.baidu.com/s/1raUGs
Rhythmk 一步一步学 JAVA (15) mybatis 入门学习-1的更多相关文章
- 没有基础的初学者学java怎样快速入门?超全的学习路线图
现在地球人都知道互联网行业工资高,上万都是小case,不值一提.可是对于大部分人来说,工资七八千都算很难了.那我也想学java,当程序员,赚大钱.可是作为一个初学者,怎样才可以快速入门呢?早点入门就可 ...
- 教妹学Java:Spring 入门篇
你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢).从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗 ...
- Java—System类入门学习
第三阶段 JAVA常见对象的学习 System类 System类包含一些有用的字段和方法,他不能被实例化 //用于垃圾回收 public static void gc() //终止正在运行的java虚 ...
- Rhythmk 一步一步学 JAVA (18): Enum枚举学习
枚举定义: public enum SizeEnum { SMALL, BIG, BIGEST }; public enum SizeStringEnum { SMALL("小") ...
- PowerDesigner 15.2入门学习 二
PowerDesigner中如何生成主键和自增列 1.SQL Server版本: 第一步,首先要建立与数据库的连接,方法较多,这里举个例子: http://www.cnblogs.com/netsql ...
- Java超简明入门学习笔记(一)
Java编程思想第4版学习笔记(一) 第二章 一切都是对象(Hello World) 这个笔记本主要记录了我在学习Java编程思想(第4版,中文版)的过程中遇到的重难点及其分析.主要 ...
- Java超简明入门学习笔记(四)
Java编程思想第4版学习笔记(四) 第六章 访问权限控制 访问权限控制是面向对象编程中的重要概念,它划分了类设计者和类使用者的界限.通过设置权限,它一方面告诉类设计者,哪个部分的修改 ...
- Java超简明入门学习笔记(三)
Java编程思想第4版学习笔记(三) 第五章 初始化与清理(构造器和垃圾回收机制) Java有和C++类似的构造函数来为新创建的对象执行初始化及完成一些特殊的操作,有的类数据成员可能会 ...
- 【Java】SpringBoot入门学习及基本使用
SpringBoot入门及基本使用 SpringBoot的介绍我就不多说了,核心的就是"约定大于配置",接下来直接上干货吧! 本文的实例: github-LPCloud,欢迎sta ...
随机推荐
- oracle中查询结果集为空,则得到一个默认值
有同事问我上述问题,我把我的实现思路写出来.子查询把查询的结果和默认的结果全部显示.父查询通过伪列rownum来筛选,如果查询有结果,就有几条就显示几条,而不去显示子查询中的默认值:如果查询没有结果, ...
- BZOJ3529 [Sdoi2014]数表【莫比乌斯反演】
Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...
- 语义耦合(Semantic Coupling)
跟小伙伴一起重构一段 UI,试图将用户界面和业务代码分离的时候,小伙伴试图在业务代码中直接调用 UI.我们当然都知道这会产生耦合,于是小伙伴试图定义一些属性.变量或接口来解决这个耦合.虽然在代码的静态 ...
- Viterbi算法和隐马尔可夫模型(HMM)算法
隐马尔可夫模型(HMM)及Viterbi算法 https://www.cnblogs.com/jclian91/p/9954878.html HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那 ...
- 接口测试基础——第7篇 简单的Python知识普及(二)之装饰器
今天我们来学习python里面的“装饰器” 1.我在函数test运行前想先打印一些内容怎么办? def func(param): print u"打印的内容" para ...
- RF第二讲--Selenium2Library库的简单实用
现在对于RF的应用方法已经有很多书介绍了,网上也可以搜到免费的电子书可以学习.今天就简单和大家介绍一下RF的用法之一,就是基于Selenium2Library库的使用. 1.首先需要安装Seleniu ...
- 【angularJS】MVC
angularJS中的mvc是借助于$scope实现的. View(视图), 即 HTML. Model(模型), 当前视图中可用的数据.scope 是模型.scope 是一个 JavaScript ...
- 【oracle】Oracle中as关键字
在Oracle中as关键字不能用于指定表的别名 在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可 但as关键字可以用于指定列的别名 但在存储过程中如果列的别名与原有列名相同,在 ...
- HTML 按钮换肤
.button2{ background-image: url(images/input-bg.jpg); width: 83px; height: 31px; border: none 0px; f ...
- CF 1093G Multidimensional Queries——线段树(消去绝对值符号)
题目:http://codeforces.com/contest/1093/problem/G 只好看看题解:https://codeforces.com/blog/entry/63877 主要是把绝 ...