Mybatis基本使用(一)

来源:互联网 发布:注册短信验证php 编辑:程序博客网 时间:2024/06/05 14:23

实体:

public class User {private Long id;private String userName;private String pwd;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "{id:" + id + ",name:" + userName + ",pwd:" + pwd + "}";}}

数据表:


一、Mybatis的配置

①首先,Mybatis和hibernate一样,都有一个总的配置文件,用来记录数据库等的信息

<?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><typeAliases><!-- 起别名,即User相当于com.bussiness.domain.User --><typeAlias type="com.bussiness.domain.User" alias="User"/></typeAliases><!-- 以下是数据库配置信息,默认使用 --><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/mybatis" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><!-- 加载映射文件,相当于hibernate中的User.hbm.xml --><mappers><mapper resource="com/bussiness/domain/User.xml" /></mappers></configuration> 
</pre><pre class="html" name="code" snippet_file_name="blog_20140622_4_4518886" code_snippet_id="401703">②实体配置文件
<pre class="html" name="code"><?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.bussiness.domain.User"><!-- #{id}只是占位符,写成其他的也可以#{aaa} --><select id="selectUserById" parameterType="long" resultMap="userMap">select id,name,pwd from `user` where id = #{id}</select></mapper>

二、Mybatis的增、删、查和改

1.增

<mapper namespace="com.bussiness.domain.User"><!-- #{id},#{userName},#{pwd} 会对应调用实体的getId,getUserName,getPwd方法,然后赋值 parameterType:传入参数类型,此处指定的是输入User类型--><insert id="insertUser" parameterType="com.bussiness.domain.User">insert into `user`(id,name,pwd) values (#{id},#{userName},#{pwd});</insert></mapper>


/** * 增加User * @throws Exception */@Testpublic void testAddUser() throws Exception{// 加载配置文件InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");// 根据配置文件创建出SessionFactory,相当于数据库连接池一样。SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);// 获得Session,即连接SqlSession session = sf.openSession();User user = new User();user.setId(1l);user.setUserName("author");user.setPwd("123456");// 第一个参数时指定执行的是那一条sql,namespace+id可以确定一条sql// 第二个参数时输入的参数session.insert("com.bussiness.domain.User.insertUser", user);// Mybatis默认事务是开启的,所以执行增删改时候记得要commitsession.commit();session.close();}


2.删

<!-- 这里的#{aaa}只是占位符而已,表示传入的参数 --><delete id="deleteUserById" parameterType="long">delete from `user` where id = #{aaa}</delete>


/** * 删除User id为2的记录 * @throws Exception */@Testpublic void testDeleteUser () throws Exception{InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sf.openSession();session.insert("com.bussiness.domain.User.deleteUserById", 2l);session.commit();session.close();}


3.查

      由于数据字段与实体字段不一致,那么要怎么查呢,下面先用一种比较简单的方法,数据库和实体映射匹配下一篇再涉及

①查询一条记录     

<!-- 给name起别名,实体数据库和实体映射一致resultType:返回值类型,这里返回User类型 --><select id="selectUserById" parameterType="long" resultType="com.bussiness.domain.User">select id,name as userName,pwd from `user` where id = #{aaa}</select>

/** * 查询id为1的记录 * @throws Exception */@Testpublic void testSelectUserById() throws Exception{InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sf.openSession();// 查询出id 为1的记录 selectOne只能返回一条记录User user = session.selectOne("com.bussiness.domain.User.selectUserById", 1l);System.out.println(user.getUserName());session.close();}

②查询所有记录

<!-- resultType:集合中元素的类型 --><select id="selectAllUser" resultType="com.bussiness.domain.User">select id,name as userName,pwd from `user`</select>

<strong>/** * 查询所有User * @throws Exception */@Testpublic void testSelectAll () throws Exception{InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sf.openSession();// 返回一个List集合List<User> users = session.selectList("com.bussiness.domain.User.selectAllUser");System.out.println(users.size());session.close();}</strong>

4.改

<span style="font-size:12px;"><update id="updateUserById" parameterType="com.bussiness.domain.User">update `user` set name=#{userName} where id = #{id}</update></span>

<span style="font-size:12px;">/** * 修改 * @throws Exception */@Testpublic void testUpdateById() throws Exception{InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sf.openSession();User user = new User();user.setId(2l);user.setUserName("testUpdate");session.update("com.bussiness.domain.User.updateUserById", user);session.commit();session.close();}</span>




0 0