mybatis的配置

来源:互联网 发布:福建弘扬软件怎么样 编辑:程序博客网 时间:2024/05/16 07:51

1.导入jar包到Dynamic项目中去。

简单的mybatis配置只需要mybatis-3.2.7.jar,因为本系统还用到mysql,所以还需要加上mysql-connector-java-5.1.24.jar。


2.创建并配置mybatis的配置文件mybatis.xml

在src目录下创建mybatis.xml文件,文件命名随意,最好不要把文件放到WEB-INF下,我之前放在那里总是出错。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <environments default="development">        <environment id="development">        <!-- 使用jdbc事务管理,事务控制由mybatis管理-->            <transactionManager type="JDBC" />        <!-- 数据库连接池,由mybatis管理-->            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver" />                <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" />                <property name="username" value="root" />                <property name="password" value="1023894102" />            </dataSource>        </environment>    </environments></configuration>
其中"url"中test是我数据库的名称,username和password是我MySql的账户名和密码。 

3.在Test数据库中新建一张表userinfo,并手动添加一条数据。

4.在src目录下新建一个包com.guozi.entity存放实体类,并在这个包下新建实体类User.class。

package com.guozi.entity;public class User {private int U_ID;private String U_Name;private String U_Password;public int getU_ID() {return U_ID;}public void setU_ID(int u_ID) {U_ID = u_ID;}public String getU_Name() {return U_Name;}public void setU_Name(String u_Name) {U_Name = u_Name;}public String getU_Password() {return U_Password;}public void setU_Password(String u_Password) {U_Password = u_Password;}
一般实体类是和数据库表做映射,所以属性最好和表的列属性保持一致,不过并不强制,命名也不要求一定相同。

属性都设置成私有属性,定义好好点击右键选择source-Generate Getters And Setters就能自动添加get和set 方法了。

5.创建User的映射文件UserMapper.xml。

在src目录下创建UserMapper.xml文件.规范来说应该建个包专门放置映射文件的。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离    注意:使用mapper代理开发时,namespace有特殊作用 --><mapper namespace="guozi"><!-- 在映射文件中配置很多sql语句 --><!-- 需求:通过Id查询用户表的记录 --><!-- 通过SELECT执行数据库查询     id:标识映射文件中的sql,称为statement的id;        将sql语句封装在mapperStatement的对象中,所以Id称为Statement的id;    parameterType:指定输入参数的类型,这里指定int型    #{}:表示一个占位符;    #{id}:其中Id表示接收输入的参数,参数名称就是Id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或者其它名称;    resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象。--><select id="findUserById" parameterType="int" resultType="com.guozi.entity.User" >    select * from userinfo where U_ID=#{id}</select><!-- 根据用户名称模糊查询用户信息,可能返回多条数据    resultType:指定的就是单条记录所映射的java类型;    ${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql中.    使用${}拼接sql,可能会引起sql注入    ${value}:接收输入参数的内容,如果传入的是简单类型,${}中只能使用value --><select id="findUserByName" parameterType="java.lang.String" resultType="com.guozi.entity.User" >    select * from userinfo where U_Name LIKE '%${value}%'</select><!-- 添加用户 parameterType:指定输入的参数类型是pojo(包括用户信息);#{}中指定pojo的属性名称,接收到pojo对象的属性值    ,mybatis通过OGNL(类似struts2的OGNL)获取对象的属性值--><insert id="insertUser" parameterType="com.guozi.entity.User" >    <!--         将insert插入的数据的主键返回到User对象中;        select last_insert_id():得到刚insert进去记录的主键值,只适用于自增主键;        keyProperty:将查询到的主键值,设置到parameterType指定的对象的那个属性        order:select last_insert_id()执行顺序,相对于insert语句来说它的执行顺序。        resultType:指定select last_insert_id()的结果类型;     -->    <!-- <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">        select last_insert_id()    </selectKey> -->    <!--         使用mysql的uuid(),实现非自增主键的返回。        执行过程:通过uuid()得到主键,将主键设置到user对象的Id的属性中,其次,在insert执行时,从user对象中取出Id属性值;     <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">        select uuid()    </selectKey>        insert into t_user (id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address})     -->   insert into userinfo (U_ID,U_Name,U_Password) values(#{U_ID},#{U_Name},#{U_Password})</insert><!-- 删除用户     根据ID删除用户,需要输入Id值-->    <delete id="deleteUser" parameterType="java.lang.Integer">        delete from userinfo where U_ID=#{id}    </delete><!-- 更新用户     需要传入用户的Id和用户的更新信息    parameterType:指定User对象,包括Id和用户的更新信息,注意:Id是必须存在的    #{id}:从输入的User对象中获取Id的属性值--><update id="updateUser" parameterType="com.guozi.entity.User">    update userinfo set U_Name=#{U_Name},U_Password=#{U_Password}     where id=#{id}</update></mapper>

映射文件最重要的是sql操作,按照自己的需求来写,parameterType是输入类型,resultType是返回类型,返回的是实体类的话需要加上包名。

6.把UserMapper.xml文件加载到mybatis.xml文件中去。

在mybatis.xml中<configuration>标签内加上以下语句。

<!-- 加载映射文件 -->    <mappers>        <mapper resource="UserMapper.xml"/>    </mappers>
如果UserMapper.xml没有在src路径下,需要加上它的路径。举例如果在com.ccc.mapper包下边的话要这样写:"com/ccc/mapper/UserMapper.xml"

7.测试。

在src目录下新建一个包com.guozi.service,在包下新建class项目命名为UserService.class.

package com.guozi.service;import java.io.IOException;import java.io.InputStream;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.guozi.entity.User;public class UserService{public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString resource = "mybatis.xml";        InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactor=new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession=sqlSessionFactor.openSession();User user=sqlSession.selectOne("guozi.findUserById", 1);System.out.println(user.getU_Name());sqlSession.close();}}
其中User user=sqlSession.selectOne("guozi.findUserById",1)中 guozi是UserMapper.xml的命名空间,findUserById是我们在UserMapper.xml给这个查询设置的id,1是输入类型。User是返回类型。

直接在此页面右键run as 选java appcliation ,控制台输出为:




 


0 0
原创粉丝点击