-------------------------------------------------------MyBatis---------------------------------------------------------------
MyBatis:是一款持久层(DAO)的半自动ORM(自定义SQL)映射框架;
ORM:(objcet-Relayionl-Mapping)对象关系映射;
------------------------------------------------------------------------------
开发步骤:
1.导包(ant-1.10.3.jar、ant-launcher-1.10.3.jar、asm-7.0.jar、cglib-3.2.10.jar、commons-logging-1.2.jar
javassist-3.24.1-GA.jar、log4j-1.2.17.jar、log4j-api-2.11.2.jar、log4j-core-2.11.2.jar、mybatis-3.5.2.jar
mysql-connector-java-8.0.11.jar、ognl-3.2.10.jar、slf4j-api-1.7.26.jar、slf4j-log4j12-1.7.26.jar)
2.连接数据库文件:mybatis.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>
<environments default="mybatis">
<environment id="mybatis">
<!--mybatis采用的事务,和JDBC保持一致、MANAGED值表示交给其他事务管理器-->
<transactionManager type="JDBC"></transactionManager>
<!--type="pooled"底层采用数据库连接池的方式连接-->
<dataSource type="POOLED"><!--UNPOOLED -->
<!--name的值不可以随便定义-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/junxie?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--解析扫描mapper.xml-->
<mappers>
<mapper resource="com\junxie\mapper\UserMapper.xml"></mapper>
</mappers>
</configuration>
------------------------------------------------------------------------------
3.entity类(不写详细代码)
4.映射文件:pojoMapper.xml(放在mapper包下)
------------------------------------------------------------------------------
<?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>
<!--查询单个 User selectOne(int id)
查询所有 List<User> selectAll()-->
<!--id:相当于方法名称
resultType:相当于返回值的类型;如果返回的是集合:书写集合的泛型即可,必须书写全路径
parameterType:参数的类型,可省略不写-->
<select id="selectAll" resultType="com.junxie.entity.User" >
select * from user
</select>
</mapper>
------------------------------------------------------------------------------
框架完善
1.log4j日志使用 (配置文件log4j.properties 放到src下)
------------------------------------------------------------------------------
log4j.rootLogger=error,stdout,logfile
log4j.logger.com.junxie.mapper.UserMapper=debug
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/bjsxt.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n
------------------------------------------------------------------------------
2.别名的设置(连接数据库文件:mybatis.xml)
<typeAliases>
<!--给具体的某一个类取别名-->
<!--<typeAlias type="com.junxie.entity.User" alias="abc"></typeAlias>-->
<!--给包下所有的类取别名 别名就是我们的类名,在pojomapper.xml文件中使用类名设置返回值类型-->
<package name="com.junxie.entity"/>
</typeAliases>
------------------------------------------------------------------------------
3.属性文件的使用----jdbc.properties文件
------------------------------------------------------------------------------
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/junxie?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username=root
password=root
------------------------------------------------------------------------------
<!--读取jdbc.properties文件-->
<properties resource="jdbc.properties"></properties>
<environments default="mybatis">
<environment id="mybatis">
<!--mybatis采用的事务,和jdbc保持一致-->
<transactionManager type="JDBC"></transactionManager>
<!--type="pooled"底层采用数据库连接池的方式连接-->
<dataSource type="POOLED">
<!--name的值不可以随便定义-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
------------------------------------------------------------------------------
注意:(mybatis中配置的属性)
1.属性文件的读取;
2.指定日志log4j;
3.给实体类起别名;
4.配置连接数据库的环境
5.扫描pojomapper.xml文件
------------------------------------------------------三种查询方式---------------------------------------------------------
方式一:selectList();返回一个集合;
方式二:selectOne();返回一条数据;
方式三:selectMap();返回map集合; 可以指定数据库中的那一列为key;(了解)
------------------------------------------------------三种参数传递方式---------------------------------------------------
在xxxmapper.xml文件中书写sql语句:
方式一: select * from 表名 where uid=#{arg0}
#{arg0},#{arg1},#{arg2}...... 下标从0开始;(不用这个)
#{param1},#{param2},#{param3}...... 表示第几个参数,从1开始;
方式二: 传递一个对象:User user=new User; user.setuid=1;user.setuname=zs;
select * from 表名 where uid=#{uid} and uname=#{uname}
方式三: 传递一个map:Map<String,Object> map=new HashMap<>();map.put("1",1);map.put("2","zhansan");
select * from 表名 where uid=#{1} and uname=#{2} 传进去的值是map中的key;
------------------------------------------------------------------------------
#{}---? 相当于占位符,安全系数高;
${}---字符串的拼接;
------------------------------------------------------增删改操作------------------------------------------------------------
增删改操作返回值都是int,必须手动提交;
1.添加:
方法:int insert(User user);
sql:insert into user values(default,#{uname},#{pwd})
2.删除:
方法:int delete(int id)
sql: delete from user where uid =#{param1}
3.修改:
方法:int update(User user)
sql: update user set uname=#{uname},pwd=#{pwd} where uid =#{uid}