- 浏览: 134844 次
文章分类
最新评论
-
wangyudong:
很有帮助的代码实例,测试Spring Boot REST AP ...
1、springboot入门案例helloworld与集成hibernate -
wangyudong:
学习了,的确是一个非常好的Spring boot实例,很快就写 ...
1、springboot入门案例helloworld与集成hibernate
示例一:增删改查
sqlMapConfig.xml
UserMapper.xml
Demo.java
示例二:原始Dao开发方法
UserMapper.xml
UserDao.java
UserDaoImpl.java
Demo.java
示例三:mapper代理方法
UserMapper.xml
UserMapper.java
Demo.java
示例四:动态sql
UserMapper.xml
UserMapper.java
Demo.java
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"> <!-- 1、properties属性 注意:mybatis属性加载顺序 (1)、在properties元素体内定义的属性首先被读取 (2)、读取properties元素中resource或url加载的配置文件,它会覆盖已读取的同名属性 (3)、最后读取parameterType传递的属性,它会覆盖已读取的同名属性 建议:不要在properties元素体内添加任何属性值 在properties文件中定义属性名要有一定的特殊性 2、settings mybatis全局参数设置 3、typeAliases别名设置 --> <configuration> <!-- 加载属性文件 --> <properties resource="dbSources.properties"> <!-- 还可以配置属性名和属性值 --> <!-- <property name="jdbc.password" value="root"/> --> <!-- <property name="value" value="c"/> --> </properties> <typeAliases> <typeAlias type="com.chen.pojo.User" alias="_User"></typeAlias> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <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> <mapper resource="sqlMapper/UserMapper.xml" ></mapper> <mapper resource="sqlMapper/UserMapper2.xml"/> <!-- 通过mapper接口加载单个映射文件 需遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名保持一致 且在一个目录中;前提:使用的是mapper代理方法 --> <!-- <mapper class="com.chen.mapper2.UserMapper"></mapper> --> <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下所有mapper接口进行加载 需遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名保持一致 且在一个目录中;前提:使用的是mapper代理方法 --> <mapper class="com.chen.mapper3.UserMapper"></mapper> <package name="com.chen.mapper2"/> </mappers> </configuration>
UserMapper.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.chen.pojo.UserMapper"> <!-- id:标识映射文件中的sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入参数的类型 #{}表示一个占位符号 resultType:指定sql输出结果 --> <select id="findUserById" parameterType="Long" resultType="_User"> select * from t_user where id=#{id} </select> <!-- resultType:指定就是单条记录所映射的java对象类型 ${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接到sql中 使用${}拼接sql,引起sql注入,存在安全隐患不建议使用 ${value}:接收输入的参数的内容,如果传入的类型是简单类型,只能用value --> <select id="findUserByName" parameterType="String" resultType="com.chen.pojo.User"> select * from t_user where username like '%${value}%' </select> <insert id="insertUser" parameterType="com.chen.pojo.User" useGeneratedKeys="true" keyProperty="id"> insert into t_user(username,birthday) values(#{username},#{birthday}) </insert> <!-- 插入记录返回自增长主键方法二 SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用于自增长 keyProperty:将查询到主键值设置到parameterType指定的对象中的属性 order :SELECT LAST_INSERT_ID()执行顺序,相对于insert语句 resultType:SELECT LAST_INSERT_ID()返回结果类型 --> <insert id="insertUser2" parameterType="com.chen.pojo.User" > <selectKey keyProperty="id" order="AFTER" resultType="Long"> SELECT LAST_INSERT_ID() </selectKey> insert into t_user(username,birthday) values(#{username},#{birthday}) </insert> <delete id="deleteUserById" parameterType="Long"> delete from t_user where id=#{id} </delete> <update id="updateUserById" parameterType="com.chen.pojo.User"> update t_user set username=#{username},birthday=#{birthday} where id=#{id} </update> </mapper>
Demo.java
package com.chen.demo; import java.io.IOException; import java.io.Reader; import java.util.Date; import java.util.List; 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 com.chen.pojo.User; public class Demo1 { private static SqlSessionFactory sqlSessionFactory= null; static{ String resources = "sqlMapConfig.xml"; try { Reader reader = Resources.getResourceAsReader(resources); sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { test2(); } public static void test1(){ SqlSession session = sqlSessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.findUserById"; User user = (User) session.selectOne(sql, 1L); System.out.println(user); session.close(); } public static void test2(){ SqlSession session = sqlSessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.findUserByName"; List<User> users = session.selectList(sql, "c"); System.out.println(users); session.close(); } public static void test3(){ SqlSession session = sqlSessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.insertUser"; User u = new User(); u.setUsername("冬天");u.setBirthday(new Date()); session.insert(sql, u); session.commit(); System.out.println(u); session.close(); } public static void test4(){ SqlSession session = sqlSessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.insertUser2"; User u = new User(); u.setUsername("春天");u.setBirthday(new Date()); session.insert(sql, u); session.commit(); System.out.println(u); session.close(); } public static void test5(){ SqlSession session = sqlSessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.deleteUserById"; session.delete(sql, 25L); session.commit(); session.close(); } public static void test6(){ SqlSession session = sqlSessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.updateUserById"; String sql2="com.chen.pojo.UserMapper.findUserById"; User u = session.selectOne(sql2, 24L); u.setUsername("冬天的忧伤"); session.update(sql, u); session.commit(); session.close(); } }
示例二:原始Dao开发方法
UserMapper.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.chen.pojo.UserMapper"> <!-- id:标识映射文件中的sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入参数的类型 #{}表示一个占位符号 resultType:指定sql输出结果 --> <select id="findUserById" parameterType="Long" resultType="_User"> select * from t_user where id=#{id} </select> <!-- resultType:指定就是单条记录所映射的java对象类型 ${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接到sql中 使用${}拼接sql,引起sql注入,存在安全隐患不建议使用 ${value}:接收输入的参数的内容,如果传入的类型是简单类型,只能用value --> <select id="findUserByName" parameterType="String" resultType="com.chen.pojo.User"> select * from t_user where username like '%${value}%' </select> <insert id="insertUser" parameterType="com.chen.pojo.User" useGeneratedKeys="true" keyProperty="id"> insert into t_user(username,birthday) values(#{username},#{birthday}) </insert> <!-- 插入记录返回自增长主键方法二 SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用于自增长 keyProperty:将查询到主键值设置到parameterType指定的对象中的属性 order :SELECT LAST_INSERT_ID()执行顺序,相对于insert语句 resultType:SELECT LAST_INSERT_ID()返回结果类型 --> <insert id="insertUser2" parameterType="com.chen.pojo.User" > <selectKey keyProperty="id" order="AFTER" resultType="Long"> SELECT LAST_INSERT_ID() </selectKey> insert into t_user(username,birthday) values(#{username},#{birthday}) </insert> <delete id="deleteUserById" parameterType="Long"> delete from t_user where id=#{id} </delete> <update id="updateUserById" parameterType="com.chen.pojo.User"> update t_user set username=#{username},birthday=#{birthday} where id=#{id} </update> </mapper>
UserDao.java
UserDaoImpl.java
package com.chen.dao; import com.chen.pojo.User; public interface UserDao { public User findUserById(Long id); public void updateUserById(User u); public void deleteUserById(Long id); } package com.chen.dao; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import com.chen.pojo.User; /* * (1)原始Dao开发方法 * 问题:1、dao接口实现类方法存在大量模板方法,设想将模板方法提取出来 * 2、sqlsession调用方法时将statement的id硬编码了( sql="com.chen.pojo.UserMapper.findUserById") * 3、sqlsession调用方法时传入参数类型错误,编译期不会报错 * * 问题:接口方法输入参数只能为一个 * 解决:通过包装类型包含多个参数 * 注意:持久层可以使用包装类型,service层建议不使用包装类型 */ public class UserDaoImpl implements UserDao { private SqlSessionFactory sessionFactory ; public UserDaoImpl() { } public UserDaoImpl(SqlSessionFactory factory){ this.sessionFactory=factory; } public User findUserById(Long id) { SqlSession session = sessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.findUserById"; User u =session.selectOne(sql, id); session.close(); return u; } public void updateUserById(User u) { SqlSession session = sessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.updateUserById"; session.update(sql, u); session.commit(); session.close(); } public void deleteUserById(Long id) { SqlSession session = sessionFactory.openSession(); String sql="com.chen.pojo.UserMapper.deleteUserById"; session.delete(sql, id); session.commit(); session.close(); } }
Demo.java
package com.chen.demo; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.chen.dao.UserDao; import com.chen.dao.UserDaoImpl; import com.chen.pojo.User; public class Demo2_UserDao { private static SqlSessionFactory sqlSessionFactory= null; static{ String resources = "sqlMapConfig.xml"; try { Reader reader = Resources.getResourceAsReader(resources); sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { test1(); } public static void test1(){ UserDao userDao = new UserDaoImpl(sqlSessionFactory); User u = userDao.findUserById(24L); System.out.println(u); } }
示例三:mapper代理方法
UserMapper.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.chen.mapper.UserMapper"> <select id="findUserById" parameterType="Long" resultType="com.chen.pojo.User"> select * from t_user where id=#{id} </select> <select id="findUserByName" parameterType="String" resultType="com.chen.pojo.User"> select * from t_user where username like '%${value}%' </select> <insert id="insertUser" parameterType="com.chen.pojo.User" useGeneratedKeys="true" keyProperty="id"> insert into t_user(username,birthday) values(#{username},#{birthday}) </insert> <insert id="insertUser2" parameterType="com.chen.pojo.User" > <selectKey keyProperty="id" order="AFTER" resultType="Long"> SELECT LAST_INSERT_ID() </selectKey> insert into t_user(username,birthday) values(#{username},#{birthday}) </insert> <delete id="deleteUserById" parameterType="Long"> delete from t_user where id=#{id} </delete> <update id="updateUserById" parameterType="com.chen.pojo.User"> update t_user set username=#{username},birthday=#{birthday} where id=#{id} </update> </mapper>
UserMapper.java
package com.chen.mapper; import java.util.List; import com.chen.pojo.User; /* * (2)、mapper代理方法 * 1、需要编写mapper.xml映射文件 * mapper接口编写需要遵循一些规范,mybatis就可以自动生成mapper接口实现类代理对象 * (1)、在mapper.xml中namespace等于接口mapper.java地址(com.chen.mapper。UserMapper) * (2)、mapper.java接口中的方法名和mapper.xml中statement的id一致 * (3)、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType一致 * (4)、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType一致 */ public interface UserMapper { public User findUserById(Long id); public List<User> findUserByName(String name); public void insertUser(User u); public void insertUser2(User u); public void updateUserById(User u); public void deleteUserById(Long id); }
Demo.java
package com.chen.demo; import java.io.IOException; import java.io.Reader; 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 com.chen.mapper.UserMapper; import com.chen.pojo.User; public class Demo3_UserMapper { private static SqlSessionFactory sqlSessionFactory= null; static{ String resources = "sqlMapConfig.xml"; try { Reader reader = Resources.getResourceAsReader(resources); sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { test1(); } private static void test1() { SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); User u = userMapper.findUserById(24L); System.out.println(u); } }
示例四:动态sql
UserMapper.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.chen.mapper3.UserMapper"> <!-- 定义sql片段 经验:基于单表来定义sql片段,可重用性高 在sql片段中不要包括where --> <sql id="query_user"> <if test="userCust != null"> <if test="userCust.username !=null and userCust.username!=''"> and username like #{userCust.username} </if> <if test="userCust.sex !=null and userCust.sex!=''"> and sex=#{userCust.sex} </if> </if> </sql> <select id="findUserList" parameterType="com.chen.pojo.UserQueryVO" resultType="_User"> select * from t_user <where> <if test="userCust != null"> <if test="userCust.username !=null and userCust.username!=''"> and username like #{userCust.username} </if> <if test="userCust.sex !=null and userCust.sex!=''"> and sex=#{userCust.sex} </if> </if> </where> </select> <select id="findUserCount" parameterType="com.chen.pojo.UserQueryVO" resultType="int"> select count(*) from t_user <where> <include refid="query_user"></include> </where> </select> <select id="findUserByIds" parameterType="com.chen.pojo.UserQueryVO" resultType="_User"> select * from t_user <where> <include refid="query_user"></include> <foreach collection="ids" item="id" open="and (" close=")" separator="or"> id =#{id} </foreach> </where> </select> </mapper>
UserMapper.java
package com.chen.mapper3; import java.util.List; import com.chen.pojo.User; import com.chen.pojo.UserQueryVO; public interface UserMapper { public List<User> findUserList(UserQueryVO vo); public int findUserCount(UserQueryVO vo); public List<User>findUserByIds(UserQueryVO vo); }
Demo.java
package com.chen.demo; import java.io.IOException; import java.io.Reader; import java.util.ArrayList; import java.util.List; 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 com.chen.mapper3.UserMapper; import com.chen.pojo.User; import com.chen.pojo.UserCustmer; import com.chen.pojo.UserQueryVO; public class Demo5_SQL { private static SqlSessionFactory sqlSessionFactory= null; static{ String resources = "sqlMapConfig.xml"; try { Reader reader = Resources.getResourceAsReader(resources); sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { test3(); } private static void test1() { SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); UserQueryVO vo = new UserQueryVO(); UserCustmer userCust = new UserCustmer(); userCust.setUsername("%C%"); userCust.setSex("m"); vo.setUserCust(userCust); List<User> list =userMapper.findUserList(vo); System.out.println(list); } private static void test2() { SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); UserQueryVO vo = new UserQueryVO(); UserCustmer userCust = new UserCustmer(); userCust.setUsername("%C%"); userCust.setSex("m"); vo.setUserCust(userCust); int count =userMapper.findUserCount(vo); System.out.println(count); } private static void test3() { SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); UserQueryVO vo = new UserQueryVO(); List<Integer> ids = new ArrayList<Integer>(); ids.add(10); ids.add(12); ids.add(15); UserCustmer userCust = new UserCustmer(); userCust.setUsername("%C%"); vo.setIds(ids); vo.setUserCust(userCust); List<User> list =userMapper.findUserByIds(vo); System.out.println(list); } }
- mybatis_demo02.rar (31.1 KB)
- 下载次数: 6
- mybatis第一天课堂笔记.rar (1021.3 KB)
- 下载次数: 10
发表评论
-
spring data jpa简单案例
2016-03-29 10:16 645pom.xml <project xmlns=&qu ... -
mybatis入门示例传智燕青讲解二----高级映射和二级缓存及整合spring及反向工程
2016-03-15 10:00 792二级缓存及高级映射 sqlMapConfig.xml &l ... -
mybatis入门案例
2016-03-10 14:41 469sqlMapConfiger.xml <?xml v ... -
spring3+mybatis整合案例
2016-02-19 11:21 658pom.xml <project xmlns=&qu ... -
hibernate一对一,一对多,多对一,多对多注解实现案例
2016-02-18 11:01 793pom.xml <project xmlns=&qu ... -
springmvc+hibernate4搭建案例
2016-02-17 09:58 849pom.xml <project xmlns=&qu ... -
hibernate和mybatis比较
2016-01-07 15:13 1188Hibernate简介 Hibernate对数据库结构提供了较 ... -
mybaits简述及原理概述
2016-01-07 11:40 3004Mybatis是一个基于Java的持久层框架。 MyBati ... -
hibernate基本原理
2016-01-04 17:38 2958hibernate是一个基于ORM的持久化框架。它是对jdbc ... -
springmvc与struts2比较
2015-12-30 17:31 799springmvc与struts2比较 1、springmvc ... -
Struts2简述及工作原理
2015-12-30 11:14 10257Struts2是实现MVC(Model-View-Contro ... -
springmvc学习总结01---简述及原理模型
2015-12-28 17:38 13581、用户发起request请求至控制器(Controlle ... -
Spring框架学习总结01----Spring简述
2015-12-28 10:30 1879学习Spring之前,首先要 ... -
spring3.0.7中各个jar包的作用总结
2015-12-28 09:25 897org.springframework.context-3.0 ... -
springmvc非注解方式
2015-11-05 21:36 821springmvc 模型原理 springmvc. ...
相关推荐
传智播客中mybatis课堂笔记。
spring mybatis shiro 共6天 8部分 第6部分 传智 燕青主讲 非常好
传智播客 燕青老师 课堂笔记 第一天和第二天 传智播客 燕青老师 课堂笔记 第一天和第二天
spring mybatis shiro 共6天 8部分 第5部分 传智 燕青主讲 非常好
mybatis入门示例项目,包括数据库sql语句,映射文件配置,配置文件加载和Junit测试,log4j打印日志等功能。
spring mybatis shiro 共6天 8部分 第4部分 传智 燕青主讲 非常好
spring mybatis shiro 共6天 8部分 第5部分 传智 燕青主讲 非常好
spring mybatis shiro 共6天 8部分 第3部分 传智 燕青主讲 非常好
spring mybatis shiro 共6天 8部分 第8部分 传智 燕青主讲 非常好
MyBatis(1)--MyBatis入门示例源代码
传智播客的mybatis视频,看过以后觉得对自己mybatis框架的学习有很大帮助,整个视频单阅读来说大概是满打满算2天的量,建议学习者用于mybatis框架的入门和进阶。加我云盘好友,有需要的资源我可以免费分享给大家
mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例...
通过本项目示例为大家介绍两种Mybatis实现CRUD的操作 * 使用映射配置文件实现CRUD操作 * 使用注解实现CRUD操作(简单介绍) 通过本项目示例为大家介绍两种Mybatis实现CRUD的操作 * 使用映射配置文件实现CRUD操作 * ...
mybatis 入门代码示例
MyBatis入门到精通,PDF,新手不错的学习资料。完整版的文档。
SpringMVC+myBatis入门简单示例分享,轻量级 SpringMVC入门+myBatis简单示例分享
Mybatis入门
MyBatis入门到精通配套资源,MyBatis入门到精通配套资源,MyBatis入门到精通配套资源